function函数为
//处理变量
/**
 * {g:a} = $_GET['a']
 * {p:a} = $_POST['a']
 * {v:a} = d('var')->get('a');
 * {}
 */
function v($str){
//get
preg_match_all('/{g:(.+?)}/',$str,$elements);
if(!empty($elements[1]))
foreach($elements[1] as $v){
$str = str_replace('{g:'.$v.'}',$_GET[$v],$str);
}
//post
preg_match_all('/{p:(.+?)}/',$str,$elements);
if(!empty($elements[1]))
foreach($elements[1] as $v){
$str = str_replace('{p:'.$v.'}',$_POST[$v],$str);
}
//var
preg_match_all('/{v:(.+?)}/',$str,$elements);
if(!empty($elements[1]))
foreach($elements[1] as $v){
$str = str_replace('{v:'.$v.'}',d('var')->get('a'),$str);
}
return $str;
}输入数值为一行文字的时候正确,如'replaces' => 
  array (
    0 => 
    array (
      'name' => '网站名',
      'seach' => '吉林文学',
      'replace' => '巴金文学',
    ),
但是多行文字用正则规则的时候就出现问题了,
用<script.*</script>能正常运行并替换
<div class="dd">.*</div>反而无法替换,尝试使用<div classh="dd">前面的内容如
友情链接.*</div>替换也是无效
不知道哪里出错
script替换的是谷歌广告以及一些js调用
div内容如下
<h2>友情链接</h2> <div class="dd">    <ul><a href="http://tieba.baidu.com/index.html" target="_blank">百度贴吧</a><a href="http://www.hao123.com" target="_blank">网址之家</a> <a href="http://www.google.com.hk/" target="_blank">谷 歌</a> <a href="http://www.qq.com/" target="_blank">腾 讯</a> <a href="http://baike.baidu.com/" target="_blank">百度百科</a>  </ul>    </div>

解决方案 »

  1.   

    不知道哪里出错?
    是你的眼睛出错了,没有看清楚正则表达式的规则说明. 匹配任意字符,但不包括换行符
    要使换行符也被 . 匹配,需要加上 s 属性

    /{v:(.+?)}/s
      

  2.   

    尝试过在后面添加s,在get,post,var后面都添加上了,代码如下,修改以后上传更新,仍然无效
    //处理变量
    /**
     * {g:a} = $_GET['a']
     * {p:a} = $_POST['a']
     * {v:a} = d('var')->get('a');
     * {}
     */
    function v($str){
        //get
        preg_match_all('/{g:(.+?)}/s',$str,$elements);
        if(!empty($elements[1]))
        foreach($elements[1] as $v){
            $str = str_replace('{g:'.$v.'}',$_GET[$v],$str);
        }
        //post
        preg_match_all('/{p:(.+?)}/s',$str,$elements);
        if(!empty($elements[1]))
        foreach($elements[1] as $v){
            $str = str_replace('{p:'.$v.'}',$_POST[$v],$str);
        }
        //var
        preg_match_all('/{v:(.+?)}/s',$str,$elements);
        if(!empty($elements[1]))
        foreach($elements[1] as $v){
            $str = str_replace('{v:'.$v.'}',d('var')->get('a'),$str);
        }
        return $str;
    }
      

  3.   

    [yabao=http://bbs.csdn.net/topics/390405509?page=1#post-394040130][/yabao]