求个正则表达式

jom_ch 2017-05-19 08:10:29

有字符串:
<img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a</a>
需要匹配出:
onerro="alert(1)" 和 onclick="alert(2)"
并且替换成空。
多谢 !
...全文
282 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jom_ch 2017-05-22
  • 打赏
  • 举报
回复
谢谢,再追问一下:

<img src=x onerror =

    "alert(1)">

<a onclick=alert(2) href="#">a</a>
上面这样写脚本也是可以执行的,也就是说onerror后面的内容可以有空格、换行等空字符,alert(1)两边可以是单双引号,也可以没有引号。 辛苦了!!!
xuzuning 2017-05-20
  • 打赏
  • 举报
回复
加个约束条件
$s =<<< TXT
<img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a</a>
<img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a≶/a>
TXT;
echo preg_replace('/(<\w+.+?)on\w+=".*?"/', '$1', $s);

<img src=x ><a  href="#">a</a>
<img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a≶/a>
jom_ch 2017-05-20
  • 打赏
  • 举报
回复
谢谢! 其实就是这种里面的onerro="alert(1)"  和  onclick="alert(2)"保留 <img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a≶/a> 而这种里面的 onerro="alert(1)"  和  onclick="alert(2)" 删除 <img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a</a>
xuzuning 2017-05-20
  • 打赏
  • 举报
回复
他转义,你也转义 等你把问题想清楚了再说
jom_ch 2017-05-19
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
$s = '<img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a</a>';
echo preg_replace('/on\w+=".*?"/', '', $s);

<img src=x ><a  href="#">a</a>
抱歉,我问得不够清楚。 其实是关于富文本编辑器的问题,用户正常输入的内容,编辑器切换到html源码,会显示成实体: <img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a≶/a> 而编辑器本身的html格式,则直接显示成( 当然,编辑器本身是不会有这样的不良信息的,是手工加上的): <img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a</a> 如果按照您这种方法,会把用户正常输入的内容也替换掉了。
xuzuning 2017-05-19
  • 打赏
  • 举报
回复
$s = '<img src=x onerro="alert(1)"><a onclick="alert(2)" href="#">a</a>';
echo preg_replace('/on\w+=".*?"/', '', $s);

<img src=x ><a  href="#">a</a>

20,358

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧