在冒号之前拆分Word上的PHP字符串

我有一个字符串,如下所示:

aaaaa: lorem ipsum bb: dolor sit amet ccc: no pro movet

将字符串拆分为数组并在PHP中获得以下结果的最佳方式是什么?

array[0]='aaaaa: lorem ipsum';
array[1]='bb: dolor sit amet';
array[2]='ccc: no pro movet';

我可以编写一个函数来查找每个":"的位置,查找其前面单词的长度,然后拆分字符串。但是我想有一种使用正则表达式的更简单的方法?


解决方案

对于此类作业,我将使用preg_match_all

$str = 'aaaaa: lorem ipsum bb: dolor sit amet ccc: no pro movet';
preg_match_all('/S+:.+?(?=S+:|$)/', $str, $m);
print_r($m);

输出:

Array
(
    [0] => Array
        (
            [0] => aaaaa: lorem ipsum 
            [1] => bb: dolor sit amet 
            [2] => ccc: no pro movet
        )

)

说明:

S+:        : 1 or more NON space followed by colon
.+?         : 1 or more any character not greedy
(?=S+:|$)  : lookahead, make sure we have 1 or more NON space followed by colon or end of string

相关文章