2012-08-05 111 views
1

創建圖像的URL的數組:PHP陣列/ array_unique混亂

$matches = array(); 

preg_match_all('#(http://[^\s]*?\.jpg)#i',$html, $matches); 

$matches2 = array_unique($matches); // get unique 

echo "there are ".count($matches2)." items!"; 

print_r($matches); 

計數顯示我我有一個結果,但是,其結果是一樣的東西如下:

there are 1 items! 

Array ([0] => 

Array ( 
[0] => http://testmenow.com/248472104410838590_J3o6Jq50_b.jpg 
[1] => http://testmenow.com/cirrow_1338328950.jpg 
[2] => http://testmenow.com/madi0601-87.jpg 
[3] => http://testmenow.com/swaggirll-4.jpg 
[4] => http://testmenow.com/erythie-35.jpg)) 

隨後,當我嘗試從URL中打印出每張圖片時,我只能得到陣列中的第一張圖片:

foreach ($matches2 as $image) { 

echo '<img src='.$image[0].' width=200 height=200>'; 

} 

我ne編輯要能單獨打印每個數組項目 - 我想我混亂的東西的地方,但兩個小時過去了......仍然在同一個地方

回答

4

preg_match_all返回每個子匹配的數組。這意味着$matches[0]是包含您的預期結果的數組。 您的代碼應該是這樣的:

preg_match_all('#http://[^\s]*?\.jpg#i',$html, $matches); 
$matches2 = array_unique($matches[0]); // get unique 
echo "there are ".count($matches2)." items!"; 

foreach ($matches2 as $image) { 
    echo '<img src='.$image.' width=200 height=200>'; 
} 

你可以在你的正則表達式省略了支架,因爲這已經是匹配的。

+0

千恩萬謝 - +1爲 - 但是,回聲行應爲:回聲「」;作爲打印圖像[0]只打印字母h – 2012-08-05 09:56:24

+0

@DarrenSweeney你是正確的複製,並錯過了它:)謝謝。 – flec 2012-08-05 09:58:21