2010-06-28 64 views
0

我正在寫這個快速腳本從網頁的源提取聊天室名稱。我用fopen()和fgets()抓取數據,並且所有返回都很好。PHP:麻煩preg_match_all()返回

我的正則表達式是/#[a-zA-z]+/,這似乎工作。但是我無法獲得preg_match_all()以返回簡明的數據列表。

preg_match_all("/#[a-zA-z]+/", $contents, $foo, PREG_SET_ORDER); 
foreach($foo as $item) print $item; 

返回「ArrayArrayArrayArrayArrayArrayArrayArray ...」。

print_r ($item); 

返回的東西沿着([0] => #channel1) Array ([0] => #channe2) Array ([0] => #channel3)...

我不確定如何得到這個格式化得當,任何快速幫助?

+0

取決於你想要的輸出。它應該是什麼樣子? – 2010-06-28 12:25:20

回答

1
$contents = '#channel1 #channel2 #channel3'; 

preg_match_all("/(#[a-zA-z0-9]+)/", $contents, $foo, PREG_SET_ORDER); 
var_dump($foo); 
echo '<hr />'; 

foreach($foo as $item) 
    print $item[1].'<br />'; 
+0

什麼都沒有。它只是將數組的每個值前置 'string [value of strlength]' – Francis 2010-06-28 12:18:40

+0

向我們展示$ contents的值以及您希望輸出的外觀 – 2010-06-28 12:32:07

0

走開,回來,很清楚發生了什麼事。 $ foo數組中的所需值被包裝在另一個數組中。我簡單地包裹着我的foreach()聲明與另一foreach()聲明正是如此:

foreach($foo as $item) { 
    foreach($item as $bar) { 
    print $bar . "<br />"; 
    } 
} 

方式都沒有問題。