在PHP中是否可以区分Vimeo ID(129565826)和YouTube ID(Bo3bkdYHp_M)之间的差异?它们都是完全不同的,但不确定PHP知道差异的最佳方式?如果我使用完整的URL,我可以做类似的事情:
if (stripos($url,'youtube.com') === false) {
//must be vimeo
} else {
//is youtube
}
有什么想法或帮助吗?也许我可以使用is_numeric
?
谢谢,R
来自youtube的工作人员:
我们不对视频ID的格式做出任何公开保证。
和
如果您需要验证随机用户输入是否与有效视频ID相对应,我建议您进行实证测试。尝试访问http://gdata.youtube.com/feeds/api/videos/VIDEO_ID
取自这个答案: https://webapps.stackexchange.com/a/54448 引用此来源: https://groups.google.com/forum/#!msg/youtube-api-gdata/maM-h-zKPZc/PJDlDWv77TEJ
对于这个问题:
Vimeo识别总是纯粹是一个数字吗?
一名vimeo工作人员回答说:
视频ID将始终是一个数值,我们在不久的将来没有计划改变网站的这个基本构建块:)
来源:https://vimeo.com/forums/api/topic:267078
您最好的机会是查询每个服务的API,以使用请求的ID检查是否存在视频。
strlen
和is_numeric
将是我的猜测。但是不要让你变得太难,因为id格式可以随时改变。
if(strlen($video_id) == 11 && !is_numeric($video_id)){
//YouTube
}else{
//Vimeo
}
假设Vimeo url只包含数字,那么你可以这样做:
// $url constains the full url to the video, for youtube it would be like this $url = "https://www.youtube.com/watch?v="
if(ctype_digit($id) && filter_var($url.$id, FILTER_VALIDATE_URL) != FALSE){
echo 'This is Vimeo url';
}else if(filter_var($url.$id, FILTER_VALIDATE_URL) != FALSE) {
echo 'This youtube url';
}
出于安全原因,我们使用“过滤器验证器”来检查网址是否有效,以防万一它们会更改网址结构
我只使用video ID
来确定要实现的嵌入块
if(is_numeric($video_id)) {
// print out VIMEO embed view block with $video_id
} else {
// print out YOUTUBE embed view block with $video_id
}