分解函数忽略 space 个字符
Explode function ignores space character
php:
$str="M. M. Grice and B. H. Alexander and L. Ukestad ";
// I need to explode the string by delimiter "and"
$output=explode("and",$str);
输出:
M.M.格莱斯
B.H.亚历克斯
呃
L.乌克斯塔德
名字"Alexander"中有一个"and"所以也被拆分了。
所以,我将其更改为 $output=explode(" and ",$str)// as delimiter "and" has space.
但它确实有效。
我哪里做错了?我试过了$output=explode("\ and\ ",$str)
。
但是 none 他们工作
预期输出:
M.M.格莱斯
B.H.亚历山大
L.乌克斯塔德
通过正则表达式更好地尝试这个: preg_split("/\sand\s/i",$str);
它会爆炸以防(AND & and)两者都..
问题中提供的代码:
$output=explode(" and ", $str);
是获得所需输出的正确方法。
当输入字符串$str
中and
周围的字符不是正则spaces(" " == chr(32)
)而是制表符("\t" == chr(9)
)、换行符 ("\n" == chr(10)
) 或其他白色 space 字符。
字符串可以使用preg_split()
拆分:
$output = preg_split('/\sand\s/', $str);
将使用 and
包围任何白色 space 字符作为分隔符。
另一个可以使用的regex
是:
$output = preg_split('/\band\b/', $str);
这将使用单词 and
作为分隔符来拆分 $str
,无论它周围有什么字符(非字母、非数字、非下划线)。它会将 and
识别为问题中提供的字符串中的分隔符,但也会识别 "M. M. Grice and B. H. Alexander (and L. Ukestad)"
.
中的分隔符
一个不受欢迎的副作用是 and
周围的 space 不是定界符的一部分,它们将保留在拆分片段中。通过修剪 preg_split():
返回的片段,可以轻松移除它们
$str = "M. M. Grice and B. H. Alexander (and L. Ukestad)";
$output = array_map('trim', preg_split('/\band\b/', $str));
var_export($output);
将显示:
array (
0 => 'M. M. Grice',
1 => 'B. H. Alexander (',
2 => 'L. Ukestad)',
)
php:
$str="M. M. Grice and B. H. Alexander and L. Ukestad ";
// I need to explode the string by delimiter "and"
$output=explode("and",$str);
输出:
M.M.格莱斯
B.H.亚历克斯
呃
L.乌克斯塔德
名字"Alexander"中有一个"and"所以也被拆分了。
所以,我将其更改为 $output=explode(" and ",$str)// as delimiter "and" has space.
但它确实有效。
我哪里做错了?我试过了$output=explode("\ and\ ",$str)
。
但是 none 他们工作
预期输出:
M.M.格莱斯
B.H.亚历山大
L.乌克斯塔德
通过正则表达式更好地尝试这个: preg_split("/\sand\s/i",$str);
它会爆炸以防(AND & and)两者都..
问题中提供的代码:
$output=explode(" and ", $str);
是获得所需输出的正确方法。
当输入字符串$str
中and
周围的字符不是正则spaces(" " == chr(32)
)而是制表符("\t" == chr(9)
)、换行符 ("\n" == chr(10)
) 或其他白色 space 字符。
字符串可以使用preg_split()
拆分:
$output = preg_split('/\sand\s/', $str);
将使用 and
包围任何白色 space 字符作为分隔符。
另一个可以使用的regex
是:
$output = preg_split('/\band\b/', $str);
这将使用单词 and
作为分隔符来拆分 $str
,无论它周围有什么字符(非字母、非数字、非下划线)。它会将 and
识别为问题中提供的字符串中的分隔符,但也会识别 "M. M. Grice and B. H. Alexander (and L. Ukestad)"
.
一个不受欢迎的副作用是 and
周围的 space 不是定界符的一部分,它们将保留在拆分片段中。通过修剪 preg_split():
$str = "M. M. Grice and B. H. Alexander (and L. Ukestad)";
$output = array_map('trim', preg_split('/\band\b/', $str));
var_export($output);
将显示:
array (
0 => 'M. M. Grice',
1 => 'B. H. Alexander (',
2 => 'L. Ukestad)',
)