0

これまでのところ、この正規表現コードを使用して YouTube ビデオの ID を取得してきました

"/https?:\/\/w*.?(?:youtube.com|youtu.be)\/watch\/\?v=([A-Za-z0-9\-_]+)/i"

HTML リンク (href="..") の YouTube 動画の ID を無視するように拡張してみました。

"/[?:(^href=\")]https?:\/\/w*.?(?:youtube.com|youtu.be)\/watch\/\?v=([A-Za-z0-9\-_]+)/i"

残念ながら、それは行っていません。実際、完全なコードは反対の結果を生成します。

$input = array(
    'http://youtube.com/watch/?v=oKay1',
    'http://youtu.be/watch/?v=oKay2',
    'href="http://youtube.com/watch/?v=NICHToKay"', //this shouldn't be found
    '[url="http://youtube.com/watch/?v=oKay3]'
    );

$pattern = "/[?:(^href=\")]https?:\/\/w*.?(?:youtube.com|youtu.be)\/watch\/\?v=([A-Za-z0-9\-_]+)/i";

foreach($input as $v) {
    $match = preg_match_all($pattern, $v, $result);
    print "$v => $match\n";
    if ($match == 1)
        var_dump($result);
}

助けてください?

4

2 に答える 2

2

これを試してください(配列内の4つの指定された値に基づいて):

/^(\[url\="){0,1}http[s]{0,1}\:\/\/(www\.){0,1}(youtube\.com|youtu\.be)\/watch\/\?v\=(.+)(\]){0,1}/ims

結果の3番目の配列でIDを取得します

于 2013-04-23T13:44:41.797 に答える
0

これを試してみてください。このサイトの別のリンクから入手しました

preg_match('#<object[^>]+>.+?http://www.youtube.com/v/([A-Za-z0-9\-_]+).+?</object>#s', $markup, $matches);

var_dump($matches[1]);

ソース : PHP で html コードから Youtube ビデオ ID を取得する

于 2013-04-23T13:48:19.477 に答える