【发布时间】:2017-02-07 08:06:15
【问题描述】:
例如,我有一个波斯数字字符串
11251220122
即英文数字1125120124。例如,我想将此字符串转换为以逗号分隔的数字格式,例如
1,125,120,124
喜欢我做的时候
number_format(1125120124); // it returns as 1,125,120,124
和
number_format(112512012); // it returns as 112,512,012
所以实际上我想要与 number_format 方法类似的结果。我刚开始使用正则表达式。尝试了非常基本的模式,但仍然没有接近。尝试preg_split 拆分字符串并用逗号再次连接它,但似乎不是正确的方法。我有一个函数,我传递一个数字,该数字以波斯字符返回给我。也分享一下
function trans($num)
{
$persian_num_array = [
'0'=>'۰',
'1'=>'۱',
'2'=>'۲',
'3'=>'۳',
'4'=>'۴',
'5'=>'۵',
'6'=>'۶',
'7'=>'۷',
'8'=>'۸',
'9'=>'۹',
];
$translated_num = '';
$temp_array=[];
while ($num > 0) {
array_push($temp_array,$num % 10);
$num = intval($num / 10);
}
foreach($temp_array as $val){
$translated_num.= $persian_num_array[array_pop($temp_array)];
}
echo $translated_num;
}
【问题讨论】:
-
那么,您拥有
$inpt = '۱۱۲۵۱۲۰۱۲۴',并且想要获得$output = 1,125,120,124(作为数字)?还是$output = "1,125,120,124"? -
不,我有 $input ='1125120124' ,我将其更改为 $temp_result = '۱۱2۵۱۲۰۱۲۴' 但 $final_result 应该是一个格式化的数字。比如'1,125,120,124'
-
好的,把你的数字翻译成波斯语后,你可以使用
preg_replace('~\d(?=(\d{3})+(?!\d))~', '$0,', $temp)。
标签: php regex string number-formatting