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>
解决方案 »
- php开发大型项目中用的工具
- 查询数据库后遍历某个列,列值变化后插入某标志.
- 关于PHP多图上传讨论!
- 关于php使用system()开启linux下的firefox,报错:Error:no display specified
- PHP怎么调用asp.net中的WCF和webservice服务?
- 求php5.3.9下面可以使用的imagick.dll
- 怎样才能获得获取好友列表
- 求大神帮看下,PHP输出数据记录条数,limit无效
- php 日期格式转换疑问,望大神伸手。。
- thinkphp中关于行为中的常量不解析的现象
- php5.38 openssl_get_privatekey()这个方法不能用 求大神帮助
- wordpress 发布文章 公开度添加选择vip只能vip会员能浏览怎么修改,求解!
是你的眼睛出错了,没有看清楚正则表达式的规则说明. 匹配任意字符,但不包括换行符
要使换行符也被 . 匹配,需要加上 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;
}