gpt4 book ai didi

php - Youtube I.D 解析新的 URL 格式

转载 作者:IT王子 更新时间:2023-10-28 23:51:14 26 4
gpt4 key购买 nike

这个问题之前有人问过,我发现了这个:

Reg exp for youtube link

但我正在寻找稍微不同的东西。

我需要匹配 Youtube I.D 本身与所有可能的 youtube 链接格式兼容。不仅仅从 youtube.com 开始。

例如:

http://www.youtube.com/watch?v=-wtIMTCHWuI

http://www.youtube.com/v/-wtIMTCHWuI?version=3&autohide=1

http://youtu.be/-wtIMTCHWuI

http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D-wtIMTCHWuI&format=json

http://s.ytimg.com/yt/favicon-wtIMTCHWuI.ico

http://i2.ytimg.com/vi/-wtIMTCHWuI/hqdefault.jpg

我可以使用一种聪明的策略来匹配与所有这些格式兼容的视频 ID -wtIMTCHWuI。我在考虑字符计数和匹配 = ? / . & 字符。

最佳答案

我不得不为我几周前编写的一个 PHP 类处理这个问题,最终得到一个匹配任何类型字符串的正则表达式:有或没有 URL 方案,有或没有子域,youtube.com URL 字符串,youtu .be URL 字符串并处理各种参数排序。您可以查看at GitHub或者直接复制粘贴下面的代码块:

/**
* Check if input string is a valid YouTube URL
* and try to extract the YouTube Video ID from it.
* @author Stephan Schmitz <eyecatchup@gmail.com>
* @param $url string The string that shall be checked.
* @return mixed Returns YouTube Video ID, or (boolean) false.
*/
function parse_yturl($url)
{
$pattern = '#^(?:https?://|//)?(?:www\.|m\.)?(?:youtu\.be/|youtube\.com/(?:embed/|v/|watch\?v=|watch\?.+&v=))([\w-]{11})(?![\w-])#';
preg_match($pattern, $url, $matches);
return (isset($matches[1])) ? $matches[1] : false;
}

测试用例:https://3v4l.org/GEDT0
JavaScript 版本:https://stackoverflow.com/a/10315969/624466

为了解释正则表达式,这里有一个拆分版本:

/**
* Check if input string is a valid YouTube URL
* and try to extract the YouTube Video ID from it.
* @author Stephan Schmitz <eyecatchup@gmail.com>
* @param $url string The string that shall be checked.
* @return mixed Returns YouTube Video ID, or (boolean) false.
*/
function parse_yturl($url)
{
$pattern = '#^(?:https?://|//)?' # Optional URL scheme. Either http, or https, or protocol-relative.
. '(?:www\.|m\.)?' # Optional www or m subdomain.
. '(?:' # Group host alternatives:
. 'youtu\.be/' # Either youtu.be,
. '|youtube\.com/' # or youtube.com
. '(?:' # Group path alternatives:
. 'embed/' # Either /embed/,
. '|v/' # or /v/,
. '|watch\?v=' # or /watch?v=,
. '|watch\?.+&v=' # or /watch?other_param&v=
. ')' # End path alternatives.
. ')' # End host alternatives.
. '([\w-]{11})' # 11 characters (Length of Youtube video ids).
. '(?![\w-])#'; # Rejects if overlong id.
preg_match($pattern, $url, $matches);
return (isset($matches[1])) ? $matches[1] : false;
}

关于php - Youtube I.D 解析新的 URL 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com