用PHP查找一个字符串中所有 "未知 "子串的出现。

问题描述 投票:0回答:1

我有一个字符串,我需要找到其中一些子串的所有出现,但我只知道子串的首字母字符... ... 我可以做什么?

例子:我知道所有的子串都是以字母开头的,但是我只知道子串的首字符,我可以怎么做?

$my_string = "This is a text cointaining [substring_aaa attr], [substring_bbb attr] and [substring], [substring], [substring] and I'll try to find them!";

我知道所有的子串都是以 '[子串' 并以空格符(attr前)或 ']' char,所以在这个例子中,我需要找到 substring_aaa, substring_bbb子串 并计算其中每一个的出现次数。

结果将是一个以子串为键,以出现次数为值的关联数组,例如:我有一个字符串,我需要找到其中一些子串的所有出现次数,但我只知道子串的首字母字符。

$result = array(
    'substring' => 3,
    'substring_aaa' => 1,
    'substring_bbb' => 1
)
php substring find-occurrences
1个回答
2
投票

匹配 [substring 然后不 ] 0次或更多次,然后是 ]:

preg_match_all('/\[(substring[^\]]*)\]/', $my_string, $matches);

$matches[1] 会产生。

    Array
    (
        [0] => substring_aaa attr
        [1] => substring_bbb attr
        [2] => substring
        [3] => substring
        [4] => substring
    )

然后你就可以计算这些值。

$result = array_count_values($matches[1]);

在重读问题之后,如果你不想要空格后面的内容(本例中是attr),那么:

preg_match_all('/\[(substring[^\]\s]*)[\]\s]/', $my_string, $matches);

对于其中的 $matches[1] 会产生。

    Array
    (
        [0] => substring_aaa
        [1] => substring_bbb
        [2] => substring
        [3] => substring
        [4] => substring
    )

随着 array_count_values 屈服。

    Array
    (
        [substring_aaa] => 1
        [substring_bbb] => 1
        [substring] => 3
    )
© www.soinside.com 2019 - 2024. All rights reserved.