2012-05-12 109 views
2

正如我在PHP.Here新是我的js代碼搜索和正則表達式在PHP

 var sites = [ 
//Texte anime 
    {url:" http://carouselinfo.com/canal/", duration:9}, 
//Texte anime 
    {url:" http://carouselinfo.com/canal-2/", duration:9}, 
    //Intro detallee 
{url:"http://carouselinfo.com/index-t1.html", duration:35}, 
//CTA 
{url:"http://carouselinfo.com/index-t2.html", duration:35}, 
    //Football 
    {url:"http://carouselinfo.com/twitter-ligue/", duration:100}, 
//Texte anime 
    {url:" http://carouselinfo.com/canal-2/", duration:9},  
    //TrailersClub.com 
    {url:"http://trailersclub.com/?lang=fr", duration:480},  
//Heure 
{url:"http://carouselinfo.com/heure", duration:8}, 
//Meteo 
{url:"http://carouselinfo.com/meteo", duration:12}, 
//Texte anime 
    {url:" http://carouselinfo.com/canal-cine/", duration:9}, 
//Cine 
{url:"http://carouselinfo.com/cine/index-t1.html", duration:150}, 
    //Texte anime 
    {url:" http://carouselinfo.com/canal-2/", duration:9}, 
//Heure 
{url:"http://carouselinfo.com/heure", duration:8}, 
//Meteo 
{url:"http://carouselinfo.com/meteo", duration:12}, 
//Texte anime 
    {url:" http://carouselinfo.com/canal-cine/", duration:9}, 
    //Cine 

]; 

我想執行類似的網址和持續時間的一些搜索任務,以便在單獨的coloumn顯示,但是當我執行至REGx爲http然後沒有在HTML上打印。

這是我粗略的PHP代碼:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,'http://carouselinfo.com/contents.js'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$contents = curl_exec ($ch); 
$contents = json_encode($contents,true); 
curl_close($ch); 
echo $contents; 

$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; 
if (preg_match_all($reg_exUrl,$contents,$url)) 
{ 
    echo '<br/>'; 
    echo $url; 
} 
+1

刪除'json_encode'電話。這裏不需要它,並在特殊字符周圍添加額外的轉義,包括將'/'轉換爲'\ /',這會阻止匹配正則表達式。 – DCoder

+0

@DCoder +1我甚至會說json_encode是一個錯誤:) –

+0

@DCoder當我沒有使用json_encode然後echo $ url打印陣列 – Arpit

回答

0

首先拆下json_encode電話。然後應用以下正則表達式,

/url\s*:\s*"([^"]+)"/ 

代碼應該看起來像。

$reg_exUrl = '/url\s*:\s*"([^"]+)"\s*,\s*duration\s*:\s*(\d+)/'; 
if (preg_match_all($reg_exUrl,$contents,$matches)) 
{ 
    print_r($matches[1]); // not using echo here 
    print_r($matches[2]); 
} 

Php snippet

+0

@ shiplu.mokadd.im-show ARRAY代替echo $ url,爲什麼我使用json_encode – Arpit

+0

在$ matches上應用json_encode。只有這樣你才能使用echo。 –

+0

它的工作原理謝謝... – Arpit

0

的問題是,所述json_encode是增加額外的字符(「\」轉義字符)或轉化其它字符(其ASCII編碼的等效物),這意味着你正則表達式未能比賽。您應該在$ contents的原始值上運行正則表達式。順便說一句,不要回顯整個$ url值,因爲這是一個數組。

+0

那麼我應該用什麼來打印每個網址 – Arpit

0

你有一些錯誤,但如何保存你的JavaScript var作爲一個PHP變量和做一個foreach循環?

就像這個...

$sites = array('http://www.php.net/','http://stackoverflow.com/','http://www.godaddy.com/'); 
$duration = array('5','100','5000'); 

foreach($sites as $site){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$site); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $contents = curl_exec ($ch); 
    curl_close($ch); 

$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; 
preg_match_all($reg_exUrl,$contents,$urls); 
if(isset($urls)){ 

    var_dump($urls); 

} 
} 
+0

好吧我會盡力實現它 – Arpit

+0

:它沒有工作,因爲它顯示警告! – Arpit

+0

我編輯了一個smidge代碼,放在真實的網站,並把一個var轉儲,所以你可以看到一切,運行這個腳本,因爲你可以看到輸出...這是looong –