php在一个确切的单词上爆炸

时间:2016-02-01 19:37:08

标签: php regex explode

是否有可能让php爆炸工作在一个确切的单词?例如,我希望拆分字符串:

London Luton to Paris

但是,php explode会在'Luton'中找到第一次出现'to'。这个字符串也是可能的:

Paris to London Luton

首先出现'to'会正确爆炸。

理想情况下,我希望爆炸是不区分大小写的,我相信目前正在爆炸。不过我认为RegEx可能是更好的方式。

2 个答案:

答案 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被识别为分隔符,即使它出现在字符串中的第一个或最后一个单词,以及它周围的空格。