PHP preg_replace数字分为两部分

时间:2014-01-28 14:18:19

标签: php preg-replace

我需要将长度为5的数字(例如“11111”)分成两部分,空格如“111 11”。

我的代码中缺少什么?

 $zip = "11111";
 $res = preg_replace('/^\d{3}[ ]?\d{2}/', '$0 $2', $zip);
 echo $zip; // returns 11111
 echo $res; // returns 11111

非常感谢


感谢所有人,我错过了简单的括号() 我需要使用这个有点困难的方法:)

3 个答案:

答案 0 :(得分:1)

你真的需要一个正则表达式吗?如果它总是一个五位数字,那么很容易将它分开并在必要时重新构建它。

echo sprintf("%s %s", substr($zip, 0, 3), substr($zip, -2));

See it in action

答案 1 :(得分:0)

John Conde的答案很棒,但因为你的问题是:

  

我的代码中缺少什么?

我的回答是你必须用括号捕捉群组:

$zip = "11111";
$res = preg_replace('/^(\d{3})[ ]?(\d{2})/', '$1 $2', $zip);
echo $zip;
echo PHP_EOL;
echo $res;

答案 2 :(得分:0)

为什么使用正则表达式来做这么简单的事情?

$zip = '11111';
$first_part = substr($zip, 0, 3);
$last_part = substr($zip, 3);

至于你的正则表达式,你没有使用捕获组((...)),因此永远不会定义$ 0 / $ 2.