我有字符串:
HAMMER FORGED (5.400PCE-2,340Kg-6.000M3-DANGER TYPE 2)
并希望将字符串格式化为
HAMMER FORGED (5,40PCE-2.340,00Kg-6M3-DANGER TYPE 2)
我知道的每个号码都可以使用number_format()
,但是如何提取这些号码并将其放回正确的位置?
模式已修复:goods name (alpha num)
跟随属性([qty][unit]-[weight]Kg-[volume]M3-type)
,角色动态长度
答案 0 :(得分:0)
以下是layout-v23
的一个解决方案。这有点令人费解,因为您还需要捕获浮点值之间的子串。
数字匹配是:
preg_replace_callback()
值float
重新格式化(根据需要)代码:(Demo)
number_float()
输出:
$string = 'HAMMER FORGED (5.400PCE-2,340Kg-6.000M3-DANGER TYPE 2)';
echo preg_replace_callback(
'~\(([\d.]+)([A-Z]+-)([\d,.]+)(Kg-)([\d.]+)~',
function($m) {
return
"(".
number_format((float)$m[1], 2, ",", ".").
"$m[2]".
number_format((float)str_replace(",", "", $m[3]), 2, ",", ".").
"$m[4]".
number_format((float)$m[5], 0);
},
$string);
以下是与HAMMER FORGED (5,40PCE-2.340,00Kg-6M3-DANGER TYPE 2)
生成的$m
数组相关的匹配项:
preg_replace_callback()