首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PHP从代码中剥离Javascript on(任何)事件

使用PHP从代码中剥离Javascript on(任何)事件
EN

Stack Overflow用户
提问于 2010-05-07 02:38:42
回答 2查看 314关注 0票数 0

我想从一小段(4-6行)的超文本标记语言中剥离出所有的JavaScript,我以前在这里读过,最好不要在超文本标记语言上使用REGEX,所以如果有人知道更好的方法,请给我建议。

举个例子,我有下面的代码:

代码语言:javascript
运行
复制
<a href="go/to/my/link" onclick="fetchMeSomeData(this)">My Link</a>
<p onfocus="doSomethingAmazing();"></p>

现在在PHP中,我想用一个空格替换on(无论它是什么事件)事件。

EN

回答 2

Stack Overflow用户

发布于 2010-05-07 03:07:45

使用HTML Purifier库从代码中去掉像JavaScript和插件这样的东西。它比基于黑名单的正则表达式方法要好得多,因为它使用完整的HTML解析器和白名单来清理HTML。

票数 2
EN

Stack Overflow用户

发布于 2010-05-07 03:04:29

我以前就构建过这样的regexp,看起来有点吓人:)。这里是纯regexp,您可能需要额外屏蔽特殊字符以匹配您的语言要求。

代码语言:javascript
运行
复制
(\son[a-z]+\s*=\s*"[^"\\\r\n]*(?:\\.[^"\\\r\n]*)*"(?=[^<]*?>))|(\son[a-z]+\s*=\s*'[^'\\\r\n]*(?:\\.[^'\\\r\n]*)*'(?=[^<]*?>))

下面是屏蔽版本(根据java标准),您应该能够将其用作字符串。

代码语言:javascript
运行
复制
(\\son[a-z]+\\s*=\\s*\"[^\"\\\\\\r\\n]*(?:\\\\.[^\"\\\\\\r\\n]*)*\"(?=[^<]*?>))|(\\son[a-z]+\\s*=\\s*'[^'\\\\\\r\\n]*(?:\\\\.[^'\\\\\\r\\n]*)*'(?=[^<]*?>))

它只查看标签内部,并考虑事件内部的屏蔽引号。我敢肯定它不是100%防弹的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2783531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档