在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
答案 0 :(得分:4)
来自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检查是否存在视频。
答案 1 :(得分:0)
strlen
和is_numeric
。但是不要让你更难改变,因为id格式可以随时改变。
if(strlen($video_id) == 11 && !is_numeric($video_id)){
//YouTube
}else{
//Vimeo
}
答案 2 :(得分:0)
假设Vimeo网址仅包含数字,那么您可以执行以下操作:
// $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';
}
出于安全原因,我们正在使用"过滤验证器"检查网址是否有效,以防他们更改网址结构
答案 3 :(得分:0)
我仅使用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
}