【问题标题】:Get all occurances of string pattern in variable using preg_match_all使用 preg_match_all 获取变量中所有出现的字符串模式
【发布时间】:2021-02-18 03:09:13
【问题描述】:

我有一个变量,例如:

$str = 'a string1 ab string2 abc string3 abcd string4 abcde string1 abcdef string2';

我想use preg_match_all 获取所有唯一出现的string(n)

到目前为止我的代码是:

preg_match_all('%string([0-9])%', $str, $matches);

我想要返回的 $matches 数组看起来像:

Array (
[0] => 'string1'
[1] => 'string2'
[2] => 'string3'
[3] => 'string4'
)

但是我得到了多个嵌套数组

【问题讨论】:

    标签: php preg-match-all


    【解决方案1】:

    您当前的语法很好,但您获得嵌套数组的原因是因为您在 string1string2 等中定义了一个捕获组。删除不需要的捕获组,删除重复项,然后你会在这里得到你想要的行为。

    $str = 'a string1 ab string2 abc string3 abcd string4 abcde string1 abcdef string2';
    preg_match_all('/\bstring[0-9]+\b/', $str, $matches);
    $strings = array_unique($matches[0]);
    print_r($strings);
    

    打印出来:

    Array
    (
        [0] => string1
        [1] => string2
        [2] => string3
        [3] => string4
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 2011-05-30
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多