3

以下代码从推文中提取 #hashtags 并将它们放入变量 $matches 中。

$tweet = "this has a #hashtag a  #badhash-tag and a #goodhash_tag";

preg_match_all("/(#\w+)/", $tweet, $matches);

var_dump( $matches );

有人可以向我解释为什么以下结果有2 个相同的数组而不是只有 1 个吗?

array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(8) "#hashtag"
    [1]=>
    string(8) "#badhash"
    [2]=>
    string(13) "#goodhash_tag"
  }
  [1]=>
  array(3) {
    [0]=>
    string(8) "#hashtag"
    [1]=>
    string(8) "#badhash"
    [2]=>
    string(13) "#goodhash_tag"
  }
}
4

3 回答 3

11

因为你用()抓子组。

尝试:

preg_match_all("/#\w+/", $tweet, $matches);
于 2012-08-20T01:58:17.150 回答
0

为什么要使用 () ,除非您希望它完全这样做。大声笑对不起,结果不是那么友好:(

http://php.net/manual/en/function.preg-match-all.php示例 3

于 2012-08-20T02:02:52.647 回答
0

这很简单 :

()从你的表达中删除

希望能帮助到你。

于 2014-06-10T07:15:06.723 回答