繁体   English   中英

PHP preg_replace数字分为两部分

[英]PHP preg_replace number to two parts

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

我的代码中缺少什么?

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

非常感谢你


多亏了所有我,我错过了简单的括号(),我需要使用它来一点点困难的方法:)

您真的需要正则表达式吗? 如果它始终是一个五位数,则很容易将其分解并根据需要进行重构。

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

实际观看

约翰·康德John Conde )的回答很好,但是既然您的问题是:

我的代码中缺少什么?

我的答案是,必须用括号捕获组:

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

为什么要对这么简单的东西使用正则表达式?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM