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

您的正则表达式有错误。此外,您希望您使用 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 回答