PHP:检查ID是来自Vimeo还是YouTube

时间:2015-07-18 18:34:54

标签: php youtube vimeo

在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

4 个答案:

答案 0 :(得分:4)

关于Youtube视频ID

来自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视频ID

问题:

  

Vimeo识别总是纯粹是一个数字吗?

vimeo工作人员回答:

  

视频ID将始终是一个数值,我们在不久的将来没有计划更改网站的这个基本构建块:)

来源:https://vimeo.com/forums/api/topic:267078

结论

  • 非数字ID无法指向Vimeo视频。
  • 没有可靠的方法来确保数字ID属于一个服务或另一个服务。

您最好的机会是查询每项服务的API,以使用请求的ID检查是否存在视频。

答案 1 :(得分:0)

我会猜测

strlenis_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
}