0

YouTube検索の結果ページでビデオリンクをスクレイプしようとしていますが、すべてのビデオリンクに一意のIDが含まれているため問題が発生しています。これが私がこれまでに持っているコードです:

<?php

$data = file_get_contents('http://www.youtube.com/results?search_query=php');

$regex = '/watch?v={11}/';

preg_match($regex,$data,$match);

print_r($match);

?>

それを印刷するとき、私は空の配列を取得するだけなので、「/ watch?v =」またはそれに続く11文字のuidを動的に取得しようとしても、それが検出されていないように見えます。

4

2 に答える 2

1

正規表現にエラーがあります。さらに、tuを使用してpreg_match_allを使用してすべての一致を取得する必要があります。

$data = file_get_contents('http://www.youtube.com/results?search_query=php');

$regex = '/watch\?v=([a-zA-Z0-9_]{11})/';

preg_match_all($regex,$data,$matches);

print_r($matches);
于 2012-04-28T13:16:28.737 に答える
0

{11}その前のパターンが正確に11回発生する必要があることを示します。つまり、11の等号に一致するように調整しています。これを..に変更したい.{11}のですが、これはうまく機能しない可能性がありますが、少なくとも結果は得られます。

于 2012-04-28T13:14:57.173 に答える