我在网站上输入用户输入,并允许通过WYSIWYG编辑器进行格式化。
现在我通过带有ENT_quotes的htmlspecialchars运行我在PHP中获得的整个帖子。
从那里我想运行一个正则表达式将我允许的规则转换回真正的html。
那样
<p>TEXT</p>
谢谢!
成为
<p>TEXT</p>
有没有办法用正则表达式做到这一点?我并不熟悉它。但基本上寻找转义标签并用真实标签替换它们,同时保持一切在中间?
编辑:我希望正则表达式生成有效的HTML代码。首先,我通过htmlspecialchars
运行整个事务以100%安全并获得所有&lt;的实体版本。 &安培; &GT;字符。然后我想要一个正则表达式只转换我想要的标签恢复正常。我不想将所有实体解码回常规,我只想解码我想要的标签。例如,正则表达式搜索<p>TEXT</p>
返回<p>TEXT</p>
- 我不想仅重新转换<
,&
,>
。我想只重新转换我想要的标签。在这个例子中是段落标签。
答案 0 :(得分:1)
我认为这个正则表达式适用于您所描述的内容:
/<(\/?)(allowed_tags_here_seperated_by_|)>/
正则表达式演示: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 />
等
答案 1 :(得分:0)
我认为你需要html_entity_decode()