这个不用正则用sprintf更好
<?
$a = 1;
$b = 11;
echo sprintf("%03d",$a).'<br>'; 
echo sprintf("%03d",$b).'<br>'; 
?>

解决方案 »

  1.   

    你不echo不就完了
    <?
    $a = 1;
    $b = 11;
    $a2 = sprintf("%03d",$a); 
    $b2 = sprintf("%03d",$b); 
    ?>
      

  2.   

    正则用在处理这个上面是不是有点太over了.用字符串处理就OK了。
      

  3.   

    一楼的也可用,通常非不得已才用正则,
    PHP有不少字符处理函数,你试试这些吧,:)!
    $sign = "#";
    $s001 = "001";
    $s011 = "011";
    $str0 = "ASDF1ASDFA11SDFA11SDF1111ASD";
    $str1 = str_replace("11", $sign, $str0);
    echo $str1."<br/>";
    $str2 = str_replace("1", $s001, $str1);
    echo $str2."<br/>";
    $str3 = str_replace("#", $s011, $str2);
    echo $str3."<br/>";
      

  4.   

    $s = 'abc1de11f2g';
    $o = preg_replace("/\d+/e", 'sprintf("%03d",$0)', $s);当操作对象可枚举时宜尽量使用str_replace,因为他不需要启动模式匹配自动机。速度要快些