是否有可能让php爆炸工作在一个确切的单词?例如,我希望拆分字符串:
London Luton to Paris
但是,php explode会在'Luton'中找到第一次出现'to'。这个字符串也是可能的:
Paris to London Luton
首先出现'to'会正确爆炸。
理想情况下,我希望爆炸是不区分大小写的,我相信目前正在爆炸。不过我认为RegEx可能是更好的方式。
答案 0 :(得分:4)
使用preg_split
的简单解决方案:
$words = preg_split("/\bto\b/iu", "London Luton to Paris");
var_dump($words);
// the output:
array (size=2)
0 => string 'London Luton ' (length=13)
1 => string ' Paris' (length=6)
答案 1 :(得分:0)
如果您想使用'to'
作为分隔符进行爆炸,那么您可以使用字符串' to '
代替它(to
,每边有一个空格)。这种方式只有当to
是一个完整的单词时才被视为分隔符,来自较大单词的to
字母组合不匹配。
但是,如果您需要它不区分大小写,regex
可能是更好的解决方案。
preg_split('/\bto\b/i', 'London Luton to Paris');
使用to
作为分隔符拆分字符串,但前提是它是一个完整的单词(围绕它的\b
只匹配单词边界)。
i
修饰符告诉regex
引擎忽略该情况。
to
分隔符附近的空格将以您获得的碎片返回。您可以trim()
所有结果字符串
array_map('trim', preg_split('/\bto\b/i', 'Paris to London Luton');
或者您可以将它们添加到regex
:
preg_split('/\s*\bto\b\s*/i', 'Paris to London Luton');
\s*
部分与空格字符(\s
)匹配零次或多次(*
)。这样,单词to
被识别为分隔符,即使它出现在字符串中的第一个或最后一个单词,以及它周围的空格。