【问题标题】:PHP: Trouble with preg_match_all() returnPHP:preg_match_all() 返回问题
【发布时间】:2010-06-28 11:56:50
【问题描述】:

我正在编写这个快速脚本来从网页源中提取聊天室名称。我正在使用 fopen() 和 fgets() 获取数据,并且一切正常。

我的正则表达式是/#[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 )...返回一些东西

我不确定如何正确格式化,有什么快速帮助吗?

【问题讨论】:

  • 取决于你想要的输出。它应该是什么样子?

标签: php format preg-match-all pcre


【解决方案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 />';

【讨论】:

  • 还是什么都没有。它只是在数组的每个值前面加上string[strlength of value]
  • 向我们展示 $contents 的值以及您希望输出的外观
【解决方案2】:

走开又回来,很清楚发生了什么。 $foo 数组中的所需值被包装在另一个数组中。我只是简单地用另一个 foreach() 语句包装了我的 foreach() 语句:

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

工作顺利。

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多