需求:把一个字符串中的{liter}和{/liter}之间的内容提取出来(包括{literal}和{/literal}),然后md5加密后再放回原处我是这样写的
$str="的分公司大哥reterty{literal}jpojp{/literal}ojojwr154654654wete梵{literal}蒂冈的身份{/literal}广东省rowetw";
$new_str=preg_replace('/\{literal\}(.*?)\{\/literal\}/isum',md5("$1"),$new_str);
print_r($new_str);但是这样的话 2个{liter}内的md5的值都一样,不知道哪里错了,请高手修改(还用preg_replace函数)

解决方案 »

  1.   

    $str="的分公司大哥reterty{literal}jpojp{/literal}ojojwr154654654wete梵{literal}蒂冈的身份{/literal}广东省rowetw";$new_str=preg_replace('/\{literal\}(.*?)\{\/literal\}/ie','md5("$1")',$str);
    print_r($new_str);
      

  2.   


    {literal}{/literal}之间有汉字字符数字_换行等之类就不行了 如{literal}撒的dsf1564--__sd国防生
    {/literal}
      

  3.   

    $new_str=preg_replace('/\{literal\}(.*?)\{\/literal\}/ise','md5("$1")',$str);
      

  4.   

    preg_replace('/\{literal\}(.*?)\{\/literal\}/ise','md5("$1")',$str); 
      

  5.   

    $new_str=preg_replace('/\{literal\}(.*?)\{\/literal\}/ise','md5("$1")',$str);