これまでのところ、この正規表現コードを使用して 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);
}
助けてください?