带有正则表达式的字符串中的Php格式编号

时间:2010-10-11 08:07:35

标签: php regex

我需要帮助在PHP中编写正则表达式。我不是那么好的朋友。我需要在字符串中找到所有整数并按如下格式对它们进行格式化:

1 to 001000
0.13 to 000130
100 to 0100000 

等等。在正常语音中,它意味着 - 编辑数字前面加零或编辑它以相同的“顺序”。关键是要将所有整数作为此格式的字符串(6个数字)。有人可以帮帮我吗?我不会在这里发布我的试训,因为它们太愚蠢了: - )

2 个答案:

答案 0 :(得分:2)

在您的示例中,您可以将数字乘以1000,并在其前面添加0,以使总数为6位数。如果这是真的,你可以这样做:

sprintf("%06d",$n*1000);

答案 1 :(得分:1)

使用preg_replace()上的“e”修饰符(或使用preg_replace_callback()),您可以使用@ codaddict的answer

function my_format($d) {
    return sprintf('%06d', round($d * 1000));
}

$your_string = '0.12 100 number 1.12 something';

preg_replace('/\d+(\.\d+)?/e', 'my_format(\\0)', $your_string);
// Should give '000120 100000 number 001120 something'