这是我的字符串:
$myString = "first second third,el forth, fiveeee, six";
我想要捕获的是:
first
second
third
el forth
fiveeee
six
这是我尝试在preg_split中使用正则表达式:
$myPattern = "[\s,]";
问题在于它分别捕获“el”和“forth”......
我怎样才能把这个骗到el?
编辑:
我不清楚.. 我想将el作为单个数组元素捕获..因为EL太短了......我认为它只是一个单词。像:
EL CLASSICO,SOMETHING DIFFERENT,SOMETHINGELSEHERE SOMEMORETEXT
应该是:
* `EL CLASSICO`
* `SOMETHING DIFFERENT`
* `SOMETHINGELSEHERE`
* `SOMEMORETEXT`
它们应该用空格或逗号分隔,但如果有EL或LE之类的东西,则应该忽略它们。
答案 0 :(得分:2)
不是很好的解决方案,忽略
str_replace( ',' , ' ' , $myString)
最后str_replace( ' ', ' ' , $myString)
以避免双倍空格或:
preg_replace( '@, ?' , ' ' , $myString)
答案 1 :(得分:1)
<?php
$myString = "first second third,el forth,del fiveeee,six,six seven,four six";
$myPattern = "/\s*,\s*|(?<=[^\s,]{4})[\s,]+/";
print_r(preg_split($myPattern, $myString));
?>
产生
[0] => first
[1] => second
[2] => third
[3] => el forth
[4] => del fiveeee
[5] => six
[6] => six seven
[7] => four
[8] => six
(?<=[^\s,]{4})
是positive look-behind assertion。只有在前面有四个非分隔符(但它与字符本身不匹配,它只检查它们是否存在)时才会成功。如果前一个单词太短,这样就不会分裂。
但如果分隔符包含逗号,它将始终分裂 - 这就是\s*,\s*|
的用途。
答案 2 :(得分:0)
implode(' ', preg_split('/,\s*/', $myString));