Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:检查ID是否来自Vimeo或YouTube_Php_Youtube_Vimeo - Fatal编程技术网

PHP:检查ID是否来自Vimeo或YouTube

PHP:检查ID是否来自Vimeo或YouTube,php,youtube,vimeo,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 } 有什么想法或帮助吗?也许我可以用是数字的吗 谢谢, Rstrlen和是数字的将是我的猜

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

if (stripos($url,'youtube.com') === false) {
    //must be vimeo
} else {
    //is youtube
}
有什么想法或帮助吗?也许我可以用
是数字的吗

谢谢,
R

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

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

strlen
是数字的
将是我的猜测。但不要让更改变得太难,因为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';
}

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

假设Vimeo url conatins仅包含数字,则您可以执行以下操作:

// $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是否有效,以防他们会更改有关Youtube视频ID的url结构 来自youtube的一名工作人员:

我们不对视频ID的格式做出任何公开保证

如果需要验证随机用户输入是否对应于有效的 视频id,我建议做一个实证测试。试图访问

摘自此答案:

引用此源:

关于Vimeo视频ID 对该问题:

Vimeo标识是否始终只是一个数字

vimeo的一名工作人员回答说:

视频ID将始终是一个数字值,我们近期没有计划更改此网站的基本构件:)

资料来源:

结论
  • 非数字id不能指向Vimeo视频
  • 没有可靠的方法来确保数字id属于一个或另一个服务
您最好的机会是查询每个服务的API,使用请求的id检查视频是否存在。

关于Youtube视频id 来自youtube的一名工作人员:

我们不对视频ID的格式做出任何公开保证

如果需要验证随机用户输入是否对应于有效的 视频id,我建议做一个实证测试。试图访问

摘自此答案:

引用此源:

关于Vimeo视频ID 对该问题:

Vimeo标识是否始终只是一个数字

vimeo的一名工作人员回答说:

视频ID将始终是一个数字值,我们近期没有计划更改此网站的基本构件:)

资料来源:

结论
  • 非数字id不能指向Vimeo视频
  • 没有可靠的方法来确保数字id属于一个或另一个服务

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

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

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

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