javascript - 数据库条目中的 html 标记未呈现为 html
问题描述
我有一个带有注释部分的表单,它使用ckeditor以便在提交到 MySQL 数据库时将段落分开。所以两个段落将提交如下:
<p>Paragraph 1</p><p>Paragraph 2</p>
我的问题是当这些数据显示在网页上时,HTML 标签也没有像我预期的那样被读取为 HTML。当我在开发工具中查看页面时,它会在第一个和最后一个 HTML 标记之外显示引号,如下所示。这表明标签被视为文本。
“<p>Paragraph 1</p><p>Paragraph 2</p>”
我在另一个网站上做同样的事情,但这次工作正常并且正确呈现 HTML 标签。当我在开发工具中查看它时,它会在每个段落的 HTML 标记内显示引号,如下所示。毫不奇怪,这些标签被视为 HTML。
<p>”Paragraph 1”</p><p>”Paragraph 2”</p>
两者的区别在于能正确显示的是“mediumtext”类型,而不能正确显示的是“text”类型。另外一个不能正确显示的是使用 ckeditor 插件。
我只是使用以下内容来添加 ckeditor 功能:
<textarea rows='4' type="text" class="notes_c" id="notes_c"
name="notes_c" value=""></textarea>
<script type="text/javascript" src="../ckeditor/ckeditor.js"></script>
<script>
CKEDITOR.replace('notes_c');
</script>
非常感谢任何帮助了解这里发生的事情。
对此的更新是我尝试使用 html_entity_decode 和以下内容:
<?php
$note = $rsCurrentEnquiry->getColumnVal("notes_c");
$p = html_entity_decode($note);
?>
<?php echo $p; ?>
哪个解决了问题!!
解决方案
所以,我为你创造了一个小提琴,我认为你的意图。
值得注意的是,您应该使用这些方法从 CKeditor 获取/设置数据(当然,当动态获取/设置数据时):
CKEDITOR.instances.notes_c.getData();
CKEDITOR.instances.notes_c.setData(data_string);
notes_c
- 是 CKeditor 所在的 div 的 id/name/class。
如果有任何其他问题,请随时提问。
编辑:小提琴链接已损坏,现在已修复。还添加了另一个按钮来显示 getData 和 setData。
EDIT2:对不起,我确实误解了你的问题。因此,使用 javascript,我将使用 AJAX 从您的数据库 ( <p>Paragraph 1</p><p>Paragraph 2</p>
) 接收数据,然后执行类似于我在此JsFiddle中所做的操作
请注意,通过使用 PHP,如果 HTML 标记在您要插入的文本之前错误地关闭或格式错误,那么 PHP 将附加到格式错误的 HTML 并可能将您的字符串解释为只是一个字符串,而忽略 HTML 标记里面。
推荐阅读
- c++ - 当模板值相同时,为什么非模板基类构造函数优于模板派生类构造函数?
- python - Outlook中对话历史文件夹的API是什么?
- python - 我已将 tkinter 窗口划分为单元格(使用框架)。如何定义适用于每个单元格的方法?
- javascript - 在异步函数中推送到数组不起作用
- ruby - 如何获得组的空间坐标?
- ruby-on-rails - 与堆叠许多节点的 Rails 虚拟 DOM 反应
- puppet - 如何使用 Puppet 按扩展名移动文件
- php - 如何标记字符串并将其解析为数组并读取它们
- amazon-web-services - S3 PutObject 上的 Lambda 访问被拒绝
- asp.net - 在 ASP.NET Core (Razor) 中显示富文本