如何从此网址中提取YouTube ID

dLe*_*ehr 4 php regex youtube

如何从此网址中提取YouTube ID?

https%253A%252F%252Fwww.youtube.com%252Fwatch%253Fv%253Dnn5hCEMyE-E
Run Code Online (Sandbox Code Playgroud)

我试过这个正则表达式:

$url = $_GET["q"];
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);
Run Code Online (Sandbox Code Playgroud)

Ped*_*ito 15

首先解码它并使用[1]数组的第二个索引()matches:

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
}
Run Code Online (Sandbox Code Playgroud)