<?php//  功能是处理 [code]中的字符
 
//  但$string 里有两个[code][/code]以上这正则就不行了, 怎么弄才正确呢?
//  像这样不行[code]i [/code] am [code] jack .[/code]$string = 'Oh, i [code]got[/code] it.'; 
$patten = '/(.*)?(\[code\](.*)\[\/code\])(.*)?/i';
$replacement = '$1'.filter('$3').'$4';function filter($str){
   return $str; //simple
}echo preg_replace($patten,$replacement,$string);  //test
?>
[/code]

解决方案 »

  1.   

    晕, 一楼的代码被csdn替换掉了,  再发
    <?php//  功能是处理 [cod][/cod]中的字符
     
    //  但$string 里有两个[cod][/cod]以上这正则就不行了, 怎么弄才正确呢?
    //  像这样不行[cod]i [/cod] am [cod] jack .[/cod]$string = 'Oh, i [cod]got[/cod] it.'; 
    $patten = '/(.*)?(\[cod\](.*)\[\/cod\])(.*)?/i';
    $replacement = '$1'.filter('$3').'$4';function filter($str){
       return $str; //simple
    }echo preg_replace($patten,$replacement,$string);  //test
    ?>
      

  2.   


    <?php//  功能是处理 [cod][/cod]中的字符
     
    //  但$string 里有两个[cod][/cod]以上这正则就不行了, 怎么弄才正确呢?
    //  像这样不行[cod]i [/cod] am [cod] jack .[/cod]$string = 'Oh, i [cod]got[/cod] it.'; 
    $patten = '/(.*)?(\[cod\](.*)\[\/cod\])(.*)?/gi';
    $replacement = '$1'.filter('$3').'$4';function filter($str){
       return $str; //simple
    }echo preg_replace($patten,$replacement,$string);  //test
    ?>
      

  3.   

    Warning: preg_replace() [function.preg-replace]: Unknown modifier 'g'
      

  4.   

    对于"Oh, i [cod]got[/cod] itOh, i [cod]got[/cod] it"你想要得到什么样的结果?
      

  5.   

    結果是要, i got it oh,i got it   问题已经解决,   平时没事真要多看手册,   原来用错正则了$string = 'Oh, i [cod]got[/cod] it.[cod]got[/cod]'; 
    $patten = "/\[cod\](.*?)\[\/cod\]/is";
    $replacement = "$1";
      

  6.   

    是了, 想问下, 正则后面的 /i /g /e /s分别代表什么 ?
      

  7.   

    $string = 'Oh, i [cod]got[/cod] it.[cod]got[/cod]'; 
    $patten = "/\[cod\](.*?)\[\/cod\]/i";
    $replacement = "$1";//这样也行