2010-06-28 146 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 />"; 
    } 
} 

方式都没有问题。