1

の YouTube URL から ID を抽出するためすばらしいコードが見つかりましたPHP

この正規表現を に変換する構文の問題が発生していますPerl

preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $link, $matches);

これは、URL のこの部分を抽出して、次のバージョンに一致します。g6QrR5Uakeg

youtube.com/v/g6QrR5Uakeg
youtube.com/vi/g6QrR5Uakeg
youtube.com/?v=g6QrR5Uakeg
youtube.com/?vi=g6QrR5Uakeg
youtube.com/watch?v=g6QrR5Uakeg
youtube.com/watch?vi=g6QrR5Uakeg
youtu.be/g6QrR5Uakeg
www.youtube.com/v/g6QrR5Uakeg?feature=autoshare&version=3&autohide=1&autoplay=1
4

1 に答える 1

2

多分、

my ($id) = $url =~ m! (?: \bv i? [/=] | be/ ) (\w+) !x;

英語では、単語の境界に一致し、次に文字 'v' が続き、その後に 'i' が 0 回または 1 回発生します。次に、文字「/」または「=」に一致します。

| | は「または」の略なので、今までにマッチングに失敗した場合は、chars 'be/' で試してください。

上記のいずれかが成功した場合は、\w+ を使用して探している ID と一致させます。(\w は 0-9 AZ az および _ を表す単語クラスです)

于 2013-05-07T17:17:55.150 に答える