本帖最后由 chenxuezhi1986 于 2010-06-22 22:48:20 编辑

解决方案 »

  1.   


    $str = "#aaaaaaa#bbbbbbbb#cccccccc#ddddddddd";
    $count = 1;
    function updateCase($code)
    {
    return strtoupper(str_replace("#", $GLOBALS['count']++, $code[0]));
    }
    echo preg_replace_callback("/#/", "updateCase", $str);
      

  2.   

    updateCase函数里直接return $GLOBALS['count']++;就好了,因为我自己的函数复制过来的,复制多了,,,
      

  3.   

    <?php
      $str = '#aaaaaaa#bbbbbbbb#cccccccc#ddddddddd';  function fn($s){
      for($i = 0 , $j= 0 , $l = strlen($s) ; $i < $l ; $i++){
       $s{$i} = $s{$i}==='#' ? $j++ : $s{$i};
      }
      return $s;
      }echo fn($str);
    ?>
      

  4.   

    $str    = "#aaaaaaa#bbbbbbbb#cccccccc#ddddddddd";echo preg_replace("/#/e", '$n?++$n:$n=1', $str);