编程语言
首页 > 编程语言> > php – 为什么preg_match_all()多次创建相同的答案?

php – 为什么preg_match_all()多次创建相同的答案?

作者:互联网

以下代码从推文中提取#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"
  }
}

解决方法:

因为您使用()来捕获子组.

尝试:

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

标签:php,preg-match-all
来源: https://codeday.me/bug/20190716/1480382.html