Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php在一个精确的单词上爆炸_Php_Regex_Explode - Fatal编程技术网

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

php在一个精确的单词上爆炸,php,regex,explode,Php,Regex,Explode,有可能让php在一个精确的单词上进行爆炸式的工作吗?例如,我希望拆分字符串: London Luton to Paris 然而,php explode将在“Luton”中找到第一个出现的“to”。此字符串也可以是: Paris to London Luton 当“to”首先出现时,它将正确地爆炸 理想情况下,我希望explode不区分大小写,我相信explode目前是这样的。然而,我认为正则表达式可能是一种更好的方法。使用preg\u split的简单解决方案: $words = preg_

有可能让php在一个精确的单词上进行爆炸式的工作吗?例如,我希望拆分字符串:

London Luton to Paris
然而,php explode将在“Luton”中找到第一个出现的“to”。此字符串也可以是:

Paris to London Luton
当“to”首先出现时,它将正确地爆炸


理想情况下,我希望explode不区分大小写,我相信explode目前是这样的。然而,我认为正则表达式可能是一种更好的方法。

使用
preg\u 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)

带有
预分割的简单解决方案

$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
,两边各有一个空格)。这样,只有当
to
是一个完整的单词时,它才被视为分隔符,较大单词的
to
字母组合不匹配

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

preg_split('/\bto\b/i', 'London Luton to Paris');
使用
作为分隔符拆分字符串,但仅当字符串是一个完整的单词时(环绕字符串的
\b
仅匹配单词边界)

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

to
分隔符附近的空格将以您得到的片段返回。您可以
trim()
所有结果字符串

array_map('trim', preg_split('/\bto\b/i', 'Paris to London Luton');
或者您可以将它们添加到
正则表达式中:

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

\s*
部分匹配空格字符(
\s
)零次或多次(
*
)。这样一来,即使单词
to
与它周围的空格一起出现在字符串的第一个或最后一个单词中,也会被标识为分隔符。

如果要使用
'to'
作为分隔符进行分解,则可以使用字符串
'to'
(它是
to
,两边各有一个空格)。这样,只有当
to
是一个完整的单词时,它才被视为分隔符,较大单词的
to
字母组合不匹配

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

preg_split('/\bto\b/i', 'London Luton to Paris');
使用
作为分隔符拆分字符串,但仅当字符串是一个完整的单词时(环绕字符串的
\b
仅匹配单词边界)

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

to
分隔符附近的空格将以您得到的片段返回。您可以
trim()
所有结果字符串

array_map('trim', preg_split('/\bto\b/i', 'Paris to London Luton');
或者您可以将它们添加到
正则表达式中:

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

\s*
部分匹配空格字符(
\s
)零次或多次(
*
)。这样一来,即使单词
to
与它周围的空格一起出现在字符串的第一个或最后一个单词中,也会被标识为分隔符。

“不过,我认为正则表达式可能是更好的方法。”是否有任何东西阻止您在分解函数中包含
之前和之后的空格?比如
explode('to',$string)
。即使要添加frz3993注释:您始终可以在“to”之前和之后压缩一个空格,然后在“to”上分解,但如果您希望不区分大小写,最好使用正则表达式。“我认为正则表达式可能是一种更好的方法。”是否有任何东西阻止您在分解函数中包含
之前和之后的空格?比如
explode('to',$string)
。即使要添加frz3993注释:你也可以在“to”之前和之后压缩一个空格,然后在“to”上分解,但是如果你想不区分大小写,最好使用正则表达式。只是一种内联修饰符的替代方法:-不过+1:-)@Jan,是的,在更复杂的情况下,内联修饰符可以提供良好的灵活性只是内联修饰符的一种替代方法:-然而+1:-)@Jan,是的,在更复杂的情况下,内联修饰符可以提供良好的灵活性