Regex将htmlspecialchar转义字符转换回



我在我的网站上接受用户输入,并允许通过所见即所得编辑器进行格式化。

现在,我通过带有ENT_引号的htmlspecialchar运行我在PHP中得到的整个帖子。

从那里我想运行一个regex,将我允许的规则转换回真正的html。

所以

<p>TEXT</p> 

谢谢!

成为

<p>TEXT</p>

有没有办法用regex做到这一点?我不熟悉它。但基本上是寻找逃脱的标签并用真正的标签替换它们,同时把所有东西都放在中间?

编辑:我希望正则表达式生成有效的HTML代码。首先,我通过CCD_ 1运行整个过程以达到100%安全,并获得所有<amp;>字符。然后我想要一个正则表达式,只将我想要的标记转换回正常值。我不想将所有实体解码回它们的常规,我只想解码我想要的标签。例如,正则表达式搜索&lt;p&gt;TEXT&lt;/p&gt;返回到<p>TEXT</p>-我不想只重新转换<&>本身。我只想重新转换我想要的标签。在这个例子中是段落标签。

我认为这个正则表达式应该适用于您所描述的:

/&lt;(/?)(allowed_tags_here_seperated_by_|)&gt;/

Regex演示:https://regex101.com/r/uX7cT1/1
PHP演示:https://eval.in/579884

PHP用法:

$allowed_tags = array('p', 'h1');
$regex = '/&lt;(/?)(' . implode('|', $allowed_tags) . ')&gt;/';
$test_string = '&lt;p&gt;TEXT&lt;/p&gt; This & that don't < decode > these though <h2> &lt;h1&gt; &lt;p class=&quot;test&quot;&gt;';
echo preg_replace($regex, '<$1$2>', $test_string);

哦,这也没有考虑到自我封闭的元素。<br /><hr /><img stuff />

我想你需要htmlspecialchars0

最新更新