php 在一个确切的词上爆炸

php Explode on an Exact Word

是否可以对一个确切的词进行 php 分解?例如,我想拆分字符串:

London Luton to Paris

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

Paris to London Luton

当 'to' 先出现时会正确爆炸。

理想情况下,我希望 explode 不区分大小写,我相信 explode 目前是这样的。不过,我认为 RegEx 可能是一种更好的方式。

使用 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)

如果您想使用 'to' 作为分隔符展开,那么您可以使用字符串 ' to ' 代替(它是 to,每边有一个 space)。这样只有当 to 是一个完整的单词时,它才被视为分隔符,来自较大单词的 to 字母组合不匹配。

但是,如果您需要它不区分大小写,regex 可能是更好的解决方案。

preg_split('/\bto\b/i', 'London Luton to Paris');

使用 to 作为分隔符拆分字符串,但前提是它是一个完整的单词(围绕它的 \b 仅匹配单词边界)。

i 修饰符告诉 regex 引擎忽略大小写。

to 分隔符附近的 space 将在您获得的片段中返回。您可以 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* 部分匹配一个 space 字符 (\s) 零次或多次 (*)。这样,单词 to 被识别为分隔符,即使它出现在字符串中的第一个或最后一个单词,连同它周围的 space。