我想从一小段(4-6行)的超文本标记语言中剥离出所有的JavaScript,我以前在这里读过,最好不要在超文本标记语言上使用REGEX,所以如果有人知道更好的方法,请给我建议。
举个例子,我有下面的代码:
<a href="go/to/my/link" onclick="fetchMeSomeData(this)">My Link</a>
<p onfocus="doSomethingAmazing();"></p>现在在PHP中,我想用一个空格替换on(无论它是什么事件)事件。
发布于 2010-05-07 03:07:45
使用HTML Purifier库从代码中去掉像JavaScript和插件这样的东西。它比基于黑名单的正则表达式方法要好得多,因为它使用完整的HTML解析器和白名单来清理HTML。
发布于 2010-05-07 03:04:29
我以前就构建过这样的regexp,看起来有点吓人:)。这里是纯regexp,您可能需要额外屏蔽特殊字符以匹配您的语言要求。
(\son[a-z]+\s*=\s*"[^"\\\r\n]*(?:\\.[^"\\\r\n]*)*"(?=[^<]*?>))|(\son[a-z]+\s*=\s*'[^'\\\r\n]*(?:\\.[^'\\\r\n]*)*'(?=[^<]*?>))下面是屏蔽版本(根据java标准),您应该能够将其用作字符串。
(\\son[a-z]+\\s*=\\s*\"[^\"\\\\\\r\\n]*(?:\\\\.[^\"\\\\\\r\\n]*)*\"(?=[^<]*?>))|(\\son[a-z]+\\s*=\\s*'[^'\\\\\\r\\n]*(?:\\\\.[^'\\\\\\r\\n]*)*'(?=[^<]*?>))它只查看标签内部,并考虑事件内部的屏蔽引号。我敢肯定它不是100%防弹的。
https://stackoverflow.com/questions/2783531
复制相似问题