如何使用TinyMCE正确显示MySQL存储的带格式内容?
嘿,这个问题我碰过好多次了,其实根源很简单:你数据库里存的是HTML实体转义后的内容(比如把<转成了<,>转成了>),直接用echo输出的话,浏览器会把这些转义字符当成普通文本显示,而不是解析成HTML标签,自然就丢失格式了。
解决方法也很直接,只需要把转义后的实体转回成原生HTML标签就行,PHP里专门有个函数干这个——htmlspecialchars_decode()。
举个实际的代码例子:
// 假设你从数据库取出的内容存在$saved_content变量里 $display_content = htmlspecialchars_decode($saved_content); echo $display_content;
拿你给出的示例内容来说,数据库里的:
<p>&nbsp;<strong>TEST</strong></p> <h1>TEst</h1>
经过htmlspecialchars_decode()处理后,会变成:
<p> <strong>TEST</strong></p> <h1>TEst</h1>
这时再echo,浏览器就能正确识别<strong>、<h1>这些标签,显示出原本的粗体、标题格式了。
另外提一句,如果你的内容是来自用户输入,要注意防范XSS攻击。不过既然用了TinyMCE,它本身已经做了基础的过滤,但如果需要更严格的安全保障,可以考虑用HTML Purifier这类工具先净化内容,再解码显示。
内容的提问来源于stack exchange,提问作者Omkar Patil
相关产品推荐
相关产品推荐

