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。
是否可以对一个确切的词进行 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。