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>
//处理变量
/**
* {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>
是你的眼睛出错了,没有看清楚正则表达式的规则说明. 匹配任意字符,但不包括换行符
要使换行符也被 . 匹配,需要加上 s 属性
如
/{v:(.+?)}/s
//处理变量
/**
* {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;
}