正则表达式部分替换 本帖最后由 woaipku 于 2014-09-25 09:19:26 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $ppp=preg_replace('/\s+onclick=".+"/U','',$str); echo $ppp; $str='<a onclick="beijing" style="width:200px"></a><a onclick="beijg" style="width:100px"></a>';$new=preg_replace('/(<a\s*)onclick=".+?"([^>]+?>)/i',"$1$2",$str);echo $new;/*<a style="width:200px"></a><a style="width:100px"></a>*/ $ppp=preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str); 怎么不行?$str = '<a onclick="beijing" style="width:200px"></a><a onclick="beijg" style="width:100px"></a>';echo preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str);<a style="width:200px"></a><a style="width:100px"></a>$1、$2 是子模式的序号若写作 \\1、\\2 能理解吗? $str='<a onclick="beijing" style="width:200px"></a><a onclick="shanghai" style="color:red"></a>';//下面是各种版本的答案,包括你们提出的在内,$ppp=preg_replace('/<a[^<]*onclick=".*"/U','<a[^<]INFO',$str);$ppp=preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str);$ppp=preg_replace('/onclick=".*"/U','INFO',$str);$ppp=preg_replace('/\s+onclick=".+"/U','',$str); $ppp=preg_replace('/(<a\s*)onclick=".+?"([^>]+?>)/i',"$1$2",$str); echo $ppp; 学习了。刚才我又想起一个方法,是使用explode来讲代码字符串部分给拆分,然后每一部分再和onclick="***"去匹配,之后再将他们拼接起来,但是遇到一个问题,那就是html标签不能拆分的问题代码部分:// 能不能换种思路,将代码部分按照空格explode全部分开,之后每一个与onclick去正则匹配,匹配上的话就删掉,然后在将匹配之后的拼接起来。$arr=explode(" ",$str);echo "<pre>";print_r($arr);$len=count($arr);echo $len;结果部分:Array( [0] => onclick="beijing" [2] => style="width:200px"> onclick="shanghai" [4] => style="color:red">)5 $str='<a onclick="beijing" style="width:200px"></a><a onclick="shanghai" style="color:red"></a>';//下面是各种版本的答案,包括你们提出的在内,$ppp[]=preg_replace('/<a[^<]*onclick=".*"/U','<a[^<]INFO',$str);$ppp[]=preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str);$ppp[]=preg_replace('/onclick=".*"/U','INFO',$str);$ppp[]=preg_replace('/\s+onclick=".+"/U','',$str); $ppp[]=preg_replace('/(<a\s*)onclick=".+?"([^>]+?>)/i',"$1$2",$str);print_r($ppp);;Array( [0] => <a[^<]INFO style="width:200px"></a><a[^<]INFO style="color:red"></a> [1] => <a style="width:200px"></a><a style="color:red"></a> [2] => <a INFO style="width:200px"></a><a INFO style="color:red"></a> [3] => <a style="width:200px"></a><a style="color:red"></a> [4] => <a style="width:200px"></a><a style="color:red"></a>)没有看出什么不对 结果中只有键名为0,2,4的,其他的没有显示出来,并且最开始的<a,中间的></a><a部分也没有啊!! 为什么没有输出啊?屏幕一片空白,if ($ppp) { echo "A match was found.<hr>";} else { echo "A match was not found.<hr>";}echo $ppp;屏幕空白,没有输出。问题在哪? php正则表达式 为什么php不能执行这个批处理? 输出数据的问题 php和apache配置的问题,请帮帮忙 求一个字符串函数 有用drupal开发的吗? 发邮件的问题,邮件列表过长怎么办? 浅水沉死人啊!各位兄弟救命!你们一定会的! 提交表单内容后怎样自动关闭该窗? 一个用户验证的问题搞不定 为什么我的PHP中用insert into只能插入部分字段 FastCGI Error时不时出现,一会又好了,一会又打不开,哪里出了问题啊
echo $ppp;
$str='<a onclick="beijing" style="width:200px"></a><a onclick="beijg" style="width:100px"></a>';
$new=preg_replace('/(<a\s*)onclick=".+?"([^>]+?>)/i',"$1$2",$str);
echo $new;
/*
<a style="width:200px"></a><a style="width:100px"></a>
*/
echo preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str);<a style="width:200px"></a><a style="width:100px"></a>$1、$2 是子模式的序号
若写作 \\1、\\2 能理解吗?
//下面是各种版本的答案,包括你们提出的在内,
$ppp=preg_replace('/<a[^<]*onclick=".*"/U','<a[^<]INFO',$str);
$ppp=preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str);
$ppp=preg_replace('/onclick=".*"/U','INFO',$str);
$ppp=preg_replace('/\s+onclick=".+"/U','',$str);
$ppp=preg_replace('/(<a\s*)onclick=".+?"([^>]+?>)/i',"$1$2",$str);
echo $ppp;
学习了。
刚才我又想起一个方法,是使用explode来讲代码字符串部分给拆分,然后每一部分再和onclick="***"去匹配,之后再将他们拼接起来,但是遇到一个问题,那就是html标签不能拆分的问题
代码部分:
// 能不能换种思路,将代码部分按照空格explode全部分开,之后每一个与onclick去正则匹配,匹配上的话就删掉,然后在将匹配之后的拼接起来。
$arr=explode(" ",$str);
echo "<pre>";
print_r($arr);
$len=count($arr);
echo $len;结果部分:
Array
(
[0] => onclick="beijing"
[2] => style="width:200px"> onclick="shanghai"
[4] => style="color:red">
)
5
//下面是各种版本的答案,包括你们提出的在内,
$ppp[]=preg_replace('/<a[^<]*onclick=".*"/U','<a[^<]INFO',$str);
$ppp[]=preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str);
$ppp[]=preg_replace('/onclick=".*"/U','INFO',$str);
$ppp[]=preg_replace('/\s+onclick=".+"/U','',$str);
$ppp[]=preg_replace('/(<a\s*)onclick=".+?"([^>]+?>)/i',"$1$2",$str);
print_r($ppp);;Array
(
[0] => <a[^<]INFO style="width:200px"></a><a[^<]INFO style="color:red"></a>
[1] => <a style="width:200px"></a><a style="color:red"></a>
[2] => <a INFO style="width:200px"></a><a INFO style="color:red"></a>
[3] => <a style="width:200px"></a><a style="color:red"></a>
[4] => <a style="width:200px"></a><a style="color:red"></a>
)
没有看出什么不对
并且最开始的<a,中间的></a><a部分也没有啊!!
if ($ppp) {
echo "A match was found.<hr>";
} else {
echo "A match was not found.<hr>";
}
echo $ppp;
屏幕空白,没有输出。
问题在哪?