【发布时间】:2017-08-17 11:18:12
【问题描述】:
我尝试了以下模式从 youtube URL 获取 youtube id。它似乎适用于普通的 youtube URL,
$pattern =
'%^# Match any youtube URL
(?:https?://)? # Optional scheme. Either http or https
(?:www\.)? # Optional www subdomain
(?: # Group host alternatives
youtu\.be/ # Either youtu.be,
| youtube\.com # or youtube.com
(?: # Group path alternatives
/embed/ # Either /embed/
| /v/ # or /v/
| /&v=/ # or ?feature=youtu.be&v=NXwxHU2Q0bo
| /watch\?v= # or /watch\?v=
) # End path alternatives.
) # End host alternatives.
([\w-]{10,12}) # Allow 10-12 for 11 char youtube id.
$%x'
;
$result = preg_match($pattern, $url, $matches);
if ($result) {
return $matches[1];
}
但此 URL https://www.youtube.com/watch?feature=youtu.be&v=NXwxHU2Q0bo 失败 和 https://m.youtube.com/watch?v=w7P_F7DGPU0
从上述 URL 获取视频 ID 需要包含什么模式? 提前致谢
【问题讨论】:
-
我可能是错的,但你为什么不使用一个只解析 url 并为每个参数提供键值字典的库。然后只获取“v”键的值?
-
你试过这种模式吗? $pattern = '/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\?? v?=?([^#\&\?]*).*/;'
-
parse_str( parse_url( $url, PHP_URL_QUERY ), $vars );您的视频 ID 为$vars['v']。 -
谢谢你的这个问题 :) 我也有同样的问题