是否有可能让php爆炸工作在一个确切的单词?例如,我要拆分的字符串:php在一个确切的词爆炸
London Luton to Paris
然而,PHP的爆炸会发现“到”第一次出现是在“卢顿”。此字符串也是可能的:
Paris to London Luton
哪个会正确爆炸,因为'to'首先出现。
理想情况下,我希望爆炸是不区分大小写,我相信目前爆炸是。不过,我认为RegEx可能是更好的方式。
是否有可能让php爆炸工作在一个确切的单词?例如,我要拆分的字符串:php在一个确切的词爆炸
London Luton to Paris
然而,PHP的爆炸会发现“到”第一次出现是在“卢顿”。此字符串也是可能的:
Paris to London Luton
哪个会正确爆炸,因为'to'首先出现。
理想情况下,我希望爆炸是不区分大小写,我相信目前爆炸是。不过,我认为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)
只是一个内联修饰符的替代方法:['〜(?i)\ bto \ b(?i-)'](https://regex101.com/r/wI3lR4/1) - 然而+1 :-) – Jan
@ Jan,是的,在更复杂的情况下,内联修饰符可以提供很好的灵活性 – RomanPerekhrest
如果你想使用'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
被识别为分隔符,即使它显示为字符串中的第一个或最后一个单词以及围绕它的空格。
“但我认为RegEx可能是更好的选择。”正确 – PeeHaa
是否有任何东西阻止你在爆炸函数中包含'to'前后的空格?像'explode('to',$ string)'。 – frz3993
甚至可以添加frz3993评论:你可以在“to”之前和之后始终连接一个空格 –