2012-04-28 64 views
0

我試圖在YouTube搜索的結果頁上刮取視頻鏈接,但是由於所有視頻鏈接都包含唯一的ID,因此遇到了問題。下面的代碼我到目前爲止:使用唯一ID的PHP /捲曲刮掉鏈接

<?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); 

?> 

當打印出來,所以它不會出現在「/手錶V =?」或者我試圖動態搶是撿我只是得到一個空數組它後面有11個字符。

+0

逃脫「?」與「\?」然後再試一次。怎麼了? – 2012-04-28 13:13:13

+0

並在「{11}」之前添加「([^ \&])」。 – 2012-04-28 13:14:22

回答

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); 
0

{11}表示它之前的模式必須正好出現11次。也就是說,你需要匹配11個等號。你想要改變它到.{11} ..這可能不會很好,但至少你會得到結果。