Php 如何从此Url提取YouTube ID
如何从该URL提取YouTube IDPhp 如何从此Url提取YouTube ID,php,regex,youtube,Php,Regex,Youtube,如何从该URL提取YouTube ID https%253A%252F%252Fwww.youtube.com%252Fwatch%253Fv%253Dnn5hCEMyE-E 我试过这个正则表达式: $url = $_GET["q"]; preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi
https%253A%252F%252Fwww.youtube.com%252Fwatch%253Fv%253Dnn5hCEMyE-E
我试过这个正则表达式:
$url = $_GET["q"];
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);
尝试此操作(在将其传递给函数之前,不要忘记生成urldecode(rawurldecode($url))
)
首先对其进行解码,然后使用数组
匹配项的第二个索引([1]
):
if(isset($_GET["q"]))
{
$url = urldecode(rawurldecode($_GET["q"]));
# https://www.youtube.com/watch?v=nn5hCEMyE-E
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);
echo $matches[1];
# nn5hCEMyE-E
}
if(isset($_GET["q"]))
{
$url = urldecode(rawurldecode($_GET["q"]));
# https://www.youtube.com/watch?v=nn5hCEMyE-E
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);
echo $matches[1];
# nn5hCEMyE-E
}