使用正则表达式从字符串中排除已关闭的HTML标记

时间:2017-04-03 17:15:08

标签: php html regex special-characters

我在PHP中遇到了preg_replace()的问题。

我从数据库中获取了一些未转义的HTML字符串,并使用htmlentities()转义所有特殊字符。它工作得很好但它也取代了<>符号,因此我使用str_replace()并替换了所有&lt;&gt;,因此标记被排除在外从更换。我使用的所有代码都已关闭,但我使用以<>符号开头的一些内容,如字符串&lt;nome programma&gt;,就像标记一样。

所以我决定将preg_replace()与此正则表达式&lt;(\w+)&gt;(.*)&lt;\/(\w+)&gt;

一起使用

我必须逃避这些字符串:

  • &lt;sub&gt;string&lt;/sub&gt;
  • &lt;code&gt;start "&lt;nome programma&gt;":&lt;/code&gt;
  • Il tipo &lt;code&gt;string&lt;/code&gt; e il tipo &lt;code&gt;char&lt;/code&gt;

这对前两种情况有效,但对最后一种情况不适用。

我抓了一个例子here

有人可以帮我搞清楚吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!

工作正则表达式就是这个:((&lt;)(\w+)(&gt;))(.*?)((&lt;)[\/+](\w+)(&gt;))

我希望这可以帮助别人!