我想从数据库中读取文本条目,其中一些实际上是 HTML 条目,其他只是可能包含 HTML 标记的纯文本,应该显示为文本。
那些纯文本应该被转换为 HTML,首先调用 PHP 的htmlspecialchars()
函数,然后通过 HTMLPurifier 运行结果。
或者换句话说,我正在寻找一些关于如何实现 isHTML() 函数的提示:
$text = getTextFromDatabase();
if (!isHTML($text)) {
$text = htmlspecialchars($text);
}
$purifier = new HTMLPurifier();
$clean_html = $purifier->purify($text);
因此,例如以下文本将贯穿htmlspecialchars
:
The <p> tag of HTML has to be followed by a </p> tag to end the paragraph.
并且以下文本不会贯穿htmlspecialchars
:
<p>These are few lines of HTML.</p>
<div>There might be multiple independent</div>
<p>but valid HTML blocks in it.</p>
似乎应该已经有一个isHTML()
功能,但我碰巧找不到它,我不想重新发明轮子:-)。也许甚至可以通过某种 HTMLPurifier 设置来做到这一点?
请注意,如果 HTML 代码有问题,则应由 HTMLPurifier 处理,并且代码不应通过htmlspecialchars
. :-) 例如,当HTML 代码中<p>
确实应该有一个结束标签时,有一个开始标签。</p>
任何帮助表示赞赏,已经感谢:-),
罗伯特。