【问题标题】:PHP: Check whether ID is from Vimeo or YouTubePHP:检查 ID 是来自 Vimeo 还是 YouTube
【发布时间】:2015-07-18 18:34:53
【问题描述】:

是否可以在 PHP 中区分 Vimeo ID (129565826) 和 YouTube ID (Bo3bkdYHp_M)?它们都完全不同,但不确定 PHP 了解差异的最佳方法是什么?如果我使用完整的 URL,我可以这样做:

if (stripos($url,'youtube.com') === false) {
    //must be vimeo
} else {
    //is youtube
}

有什么想法或帮助吗?也许我可以使用is_numeric

谢谢, 回复

【问题讨论】:

  • 这绝对不是一种安全的处理方式。您永远不会知道 Vimeo 或 Facebook 何时更改其 ID 结构并且都使用大整数或字符串。不幸的是,您应该找到一种方法来获取服务的完整 URL。

标签: php youtube vimeo


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我只使用了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
        }
        

        【讨论】:

          猜你喜欢
          • 2011-09-30
          • 2018-12-04
          • 1970-01-01
          • 2010-11-24
          • 1970-01-01
          • 2023-03-06
          • 2016-07-02
          • 1970-01-01
          相关资源
          最近更新 更多