如何在一个陈述中将字母数字值与空格分开
示例:
$arr="new stackoverflow 244code 7490script design";
那么如何才能将 alpha和数字与空间分开,如:
$arr="new stackoverflow 244 code 7490 script design";
答案 0 :(得分:2)
您可以使用 preg_split() 功能
preg_split('#(?<=\d)(?=[a-z])#i', "new stackoverflow 244code 7490script design");
print_r(preg_split('#(?<=\d)(?=[a-z])#i', "new stackoverflow 244code 7490script design"));
Array ( [0] => new stackoverflow 244 [1] => code 7490 [2] => script design )
您还可以使用 preg_replace() 功能
echo preg_replace('#(?<=\d)(?=[a-z])#i', ' ', "new stackoverflow 244code 7490script design");
new stackoverflow 244 code 7490 script design
希望这对你有帮助!
答案 1 :(得分:1)
您可以使用preg_replace(Example):
$arr = "new stackoverflow 244code 7490script design";
$newstr = preg_replace('#(?<=\d)(?=[a-z])#i', ' ', $arr);
echo $newstr; // new stackoverflow 244 code 7490 script design
regex pattern
使用了来自user1153551
的答案。
答案 2 :(得分:1)
像这样使用preg_replace
:
$new = preg_replace('/(\d)([a-z])/i', "$1 $2", $arr);
(\d)
匹配并捕获一个数字。 ([a-z])
匹配并抓住一封信。在替换中,它会放回数字,添加空格并放回字母。
如果您不想使用反向引用,可以使用外观:
$new = preg_replace('/(?<=\d)(?=[a-z])/i', ' ', $arr);
如果你想在字母和数字之间替换......
$new = preg_replace('/(?<=\d)(?=[a-z])|(?<=[a-z])(?=\d)/i', ' ', $arr);
(?<=\d)
是一个积极的观察,确保在当前位置之前有一个数字。
(?=[a-z])
是一个积极的先行,确保在当前位置之后有一封信。
同样地,(?<=[a-z])
确保在当前位置之前有一个字母,(?=\d)
确保在当前位置之后有一个数字。
另一种选择是拆分并与空格连接:
$new_arr = preg_split('/(?<=\d)(?=[a-z])/i', $arr);
$new = implode(' ', $new_arr);
或者...
$new = implode(' ', preg_split('/(?<=\d)(?=[a-z])/i', $arr));
答案 3 :(得分:0)
preg_split - 用正则表达式分割字符串
<?php
// split the phrase by any number of commas or space characters,
// which include " ", \r, \t, \n and \f
$matches = preg_split('#(?<=\d)(?=[a-z])#i', "new stackoverflow 244code 7490script design");
echo $matches['0'],' '.$matches['1'].' '.$matches['2'];
?>
的 WORKING DEMO 强>