我正在尝试在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。
答案 0 :(得分: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);
答案 1 :(得分:0)
{11}
表示前面的模式必须恰好出现11次。也就是说,你要匹配11个等号。你想把它改为.{11}
..这可能效果不好,但至少你会得到结果。