我有一个看起来像这样的字符串:
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';
我可以编写一个函数来查找每个“:”的位置,找到它前面的单词的长度,然后分割字符串。但我想使用正则表达式有一种更简单的方法吗?
答案 0 :(得分:3)
对于这类工作,我会使用TextBlock
:
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
)
)
答案 1 :(得分:0)
您可以根据要求preg_split()
获得所需的1-dim数组:
我的模式会在每个空格上拆分字符串,后跟一个或多个小写字母,然后是冒号,然后是空格。
代码:(Demo)
$string='aaaaa: lorem ipsum bb: dolor sit amet ccc: no pro movet';
var_export(preg_split('/ (?=[a-z]+: )/',$string));
输出:
array (
0 => 'aaaaa: lorem ipsum',
1 => 'bb: dolor sit amet',
2 => 'ccc: no pro movet',
)