PHP:在字符串中用空格分隔字母数字字

时间:2014-03-29 18:31:04

标签: php regex preg-replace

如何在一个陈述中将字母数字值与空格分开

示例:

$arr="new stackoverflow 244code 7490script design"; 

那么如何才能将 alpha和数字空间分开,如:

$arr="new stackoverflow 244 code 7490 script design";

4 个答案:

答案 0 :(得分:2)

您可以使用 preg_split() 功能

检查 demo Codeviper

preg_split('#(?<=\d)(?=[a-z])#i', "new stackoverflow 244code 7490script design");

PHP

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() 功能

检查 demo Codeviper

PHP

echo preg_replace('#(?<=\d)(?=[a-z])#i', ' ', "new stackoverflow 244code 7490script design");

结果

new stackoverflow 244 code 7490 script design

希望这对你有帮助!

答案 1 :(得分:1)

您可以使用preg_replaceExample):

$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);

regex101 demo

(\d)匹配并捕获一个数字。 ([a-z])匹配并抓住一封信。在替换中,它会放回数字,添加空格并放回字母。


如果您不想使用反向引用,可以使用外观:

$new = preg_replace('/(?<=\d)(?=[a-z])/i', ' ', $arr);

如果你想在字母和数字之间替换......

$new = preg_replace('/(?<=\d)(?=[a-z])|(?<=[a-z])(?=\d)/i', ' ', $arr);

regex101 demo

(?<=\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

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