我在我的网站上接受用户输入,并允许通过所见即所得编辑器进行格式化。
现在,我通过带有ENT_引号的htmlspecialchar运行我在PHP中得到的整个帖子。
从那里我想运行一个regex,将我允许的规则转换回真正的html。
所以
<p>TEXT</p>
谢谢!
成为
<p>TEXT</p>
有没有办法用regex做到这一点?我不熟悉它。但基本上是寻找逃脱的标签并用真正的标签替换它们,同时把所有东西都放在中间?
编辑:我希望正则表达式生成有效的HTML代码。首先,我通过CCD_ 1运行整个过程以达到100%安全,并获得所有<amp;>字符。然后我想要一个正则表达式,只将我想要的标记转换回正常值。我不想将所有实体解码回它们的常规,我只想解码我想要的标签。例如,正则表达式搜索<p>TEXT</p>
返回到<p>TEXT</p>
-我不想只重新转换<
、&
、>
本身。我只想重新转换我想要的标签。在这个例子中是段落标签。
我认为这个正则表达式应该适用于您所描述的:
/<(/?)(allowed_tags_here_seperated_by_|)>/
Regex演示:https://regex101.com/r/uX7cT1/1
PHP演示:https://eval.in/579884
PHP用法:
$allowed_tags = array('p', 'h1');
$regex = '/<(/?)(' . implode('|', $allowed_tags) . ')>/';
$test_string = '<p>TEXT</p> This & that don't < decode > these though <h2> <h1> <p class="test">';
echo preg_replace($regex, '<$1$2>', $test_string);
哦,这也没有考虑到自我封闭的元素。<br />
、<hr />
、<img stuff />
等
我想你需要htmlspecialchars
0