2012-05-04 53 views
0

我使用preg_match_all從另一個頁面抓取URL和標題,並抓取是好的,但我不能讓他們進入一個使用foreach!還是有另一種方式,而不是foreach?如何使用preg_match_all結合兩個抓取的變量?

//gets URLs of href='xxxx' 
preg_match_all('/a href="([^"]+)" class=l.+?>.+?<\/a>/',$sear,$results); 

//gets titles of >xxxx</a> 
    preg_match_all('/a href=".+?" class=l.+?>([^"]+)<\/a>/',$sear,$t); 

下面的代碼顯示抓起網址

foreach ($results[1] as $url) 
{ 
echo "<a href='$url'>$u</a> <br>"; 

$i++; 
} 

下面的代碼顯示搶下冠軍

foreach ($t[1] as $title) 
    { 
    echo $title; 
    $i++; 
    } 

,但我不知道如何在一個的foreach這樣我就可以顯示它們(URL &冠軍)讓它像

<a href='URL'>Title</a> 

回答

1

合併兩個正則表達式中的一個鏡頭捕捉到這兩個項目:

preg_match_all('/<a href="([^"]+)" class=l.+?>([^<]+)<\/a>/',$sear, $results); 
var_dump($results); 

現在你有兩個URL和捕獲組1和2

標題上這個表達式的改進將使用積極的前瞻來匹配關閉</a>,但爲了簡單起見,您當前的解決方案應該沒問題。

編輯:我最初把它留給OP來弄清楚如何從結果中獲取正確的輸出。但是,這是一個工作示例。

for($i = 0; $i < count($results[1]); $i++) 
    echo 'URL: ' . $results[1][$i] . ', Title: ' . $results[2][$i]; 
+0

是的以及如何從$ results數組中使用foreach獲取url和標題? –

+0

這是一個鍛鍊,讓你找出答案。我已經編輯了一個關於如何實現所需輸出的例子。 – nickb

+0

是的非常感謝你的幫助!它爲我工作! –