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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP:检查ID是来自Vimeo还是YouTube相关的知识,希望对你有一定的参考价值。

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

来自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检查是否存在视频。

另一答案

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

以上是关于PHP:检查ID是来自Vimeo还是YouTube的主要内容,如果未能解决你的问题,请参考以下文章

C# 正则表达式通过 url 从 youtube 和 vimeo 获取视频 ID

正则表达式从 youtube/vimeo url 中提取域和视频 ID

php Youtube或Vimeo嵌入

PHP Php功能可调整YouTube和Vimeo的视频大小

php 将Youtube或Vimeo网址转换为iframe

如何使用 php 获取 youtube 和 vimeo 嵌入代码的视频缩略图?