我有一个包含这样的字符串的数组:
$items = array(
"Receive 10010 from John",
"Send 1503000 to Jane",
"Receive 589 from Andy",
"Send 3454 to Mary"
);
我想重新格式化此数组中的数字,这样它将变成这样:
$items = array(
"Receive 10.010 from John",
"Send 1.503.000 to Jane",
"Receive 589 from Andy",
"Send 3.454 to Mary"
);
如果我使用number_format
函数,它的数字将像这样:
$number = '412223';
number_format($number,0,',','.');
echo $number; //412.223
答案 0 :(得分:6)
您可以使用preg_replace_callback
来匹配字符串中的数字并应用一些自定义格式。对于单个字符串,它看起来像这样:
$string = "Receive 10010 from John";
$formatted = preg_replace_callback( "/[0-9]+/", function ($matches) {
return number_format($matches[0], 0, ',', '.');
}, $string);
echo $formatted;
从约翰那里收到10.010
如果您想对整个数组应用相同的逻辑,则可以将以上内容包装在对array_map
的调用中:
$formatted = array_map(function ($string) {
return preg_replace_callback( "/[0-9]+/", function ($matches) {
return number_format($matches[0], 0, ',', '.');
}, $string);
}, $items);
print_r($formatted);
数组
(
[0] =>从约翰那里收到10.010
[1] =>发送1.503.000到Jane
[2] =>从安迪收到589
[3] =>发送3.454给玛丽
)
答案 1 :(得分:1)
你去了
请遵循以下步骤
所以整个故事是使用preg_match_all('!\ d +!',$ str,$ matches);并提取字符串号。
答案 2 :(得分:1)