比如说有一个IPv6是2001:250:1006:6132:889a:6515:2287:35a2,被冒号分成8段,每一段长为4。我想检查每一段的长度,若不足4则在前面补0,即变为2001:0250:1006:6132:889a:6515:2287:35a2,该怎么实现?

解决方案 »

  1.   


       $s='2001:250:1006:6132:889a:6515:2287:35a2';
       echo join(':',array_map('foo',explode(':',$s)));
       
       function foo($a){
            if(strlen($a)<4)
         $a=str_pad($a,4,"0",STR_PAD_LEFT); return $a;   
       }2001:0250:1006:6132:889a:6515:2287:35a2
      

  2.   

    $s = '2001:250:1006:6132:889a:6515:2287:35a2';echo join(':', array_map('foo', explode(':', $s)));//2001:0250:1006:6132:889a:6515:2287:35a2
    function foo($v) {
      return sprintf('%04s', $v);
    }