PHP正则表达式插入逗号

时间:2019-06-12 07:48:34

标签: php

我正在寻找将逗号插入数字的正则表达式。例如,我有999999999,我想插入一千个分隔符。我知道我可以使用number_format,但这不能解决我的问题,因为我的数字实际上是阿拉伯格式的“ ۱۲۳۴۵۶۷۸۹۰”,可能是在字符串中一定数量的字符后插入了一个正则表达式。我尝试使用preg_replace,但找不到答案。 我从stackoverflow的答案之一中找到了以下代码,但会引发错误

$num = '۱۲۳۴۵۶۷۸۹۰';

$ n = preg_replace(/([۱۲۳۴۵۶۷۸۹۰])/,(?=(?:[۱۲۳۴۵۶۷۸۹۰] {3})+ $),$ num); 回声$ n;

3 个答案:

答案 0 :(得分:1)

尝试使用自动换行

$num = '۱۲۳۴۵۶۷۸۹۰';
$newNum = wordwrap($num , 4 , ',' , true );

这应该输出:'۱۲۳۴,۵۶۷۸۹۰'

来源:PHP.net wordwrap

答案 1 :(得分:0)

尝试一下:

$num = '۱۲۳۴۵۶۷۸۹۰';
$ar = str_split($num, 3);
$result = implode(',', $ar);
echo $result;

答案 2 :(得分:0)

基于@JellyBean答案

$num = '۱۲۳۴۵۶۷۸۹۰';
$newNum = wordwrap($num , 6 , ',' , true );

这将回显۱۲۳,۴۵۶,۷۸۹,۰

首先,为什么要6?因为字符使用2个字节。 其次,仍然存在问题;我们想要的是:۱,۲۳۴,۵۶۷,۸۹۰

解决方案

我们可以扭转它

$num = strrev('۱۲۳۴۵۶۷۸۹۰');
$newNum = strrev(wordwrap($num , 6 , ',' , true ));

echo $newNum;

۱,۲۳۴,۵۶۷,۸۹۰

POC:https://3v4l.org/OVeQQ