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

问题描述 投票:0回答:4

在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

php youtube vimeo
4个回答
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检查是否存在视频。


0
投票

strlenis_numeric将是我的猜测。但是不要让你变得太难,因为id格式可以随时改变。

if(strlen($video_id) == 11 && !is_numeric($video_id)){
    //YouTube
}else{
    //Vimeo
}

0
投票

假设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';
}

出于安全原因,我们使用“过滤器验证器”来检查网址是否有效,以防万一它们会更改网址结构


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
}
© www.soinside.com 2019 - 2024. All rights reserved.