我需要使用所见即所得的编辑器来处理用户输入。
你如何在php中处理这个?
如果我检索数据并使用 htmlspecialchars,那么所有由所见即所得编辑器转换为特殊字符的字符都会被弄乱。
例如报价将是"e;
当我htmlspecialchars
在 php 中使用 & 将被转换为&
这将是一个明显的问题。有任何想法吗?
我需要使用所见即所得的编辑器来处理用户输入。
你如何在php中处理这个?
如果我检索数据并使用 htmlspecialchars,那么所有由所见即所得编辑器转换为特殊字符的字符都会被弄乱。
例如报价将是"e;
当我htmlspecialchars
在 php 中使用 & 将被转换为&
这将是一个明显的问题。有任何想法吗?
您是否考虑过为正在修改的内容保留纯文本和额外的 HTML 记录?您可以显示纯文本,当您保存它时,您也可以将其转换为 html 并将其保存在单独的字段中?
但是,如果特殊字符被转换为 HTML,当您将文本打印到 html 中的可编辑表单字段时,它们是否仍会正确显示(对用户)?
如果我误解了,请告诉我
大多数编辑器(CKEditor、CLEditor 和 NicEdit 等等)都支持两种输入模式:可视输入和直接输入(通常称为 HTML 模式)。
当用户在可视模式下输入文本时,编辑器负责在用户键入他/她的内容时将类似 html 的字符转换为相应的 HTML 实体。在这种模式下,编辑器通常会为用户添加标记(主要是段落)。
直接输入的工作方式与您对名称的期望一样;用户会接触到组成他或她的内容的 HTML。
您应该如何处理输入数据主要取决于用户角色。
如果用户是可信的(即公司网站的管理员),用户应该能够使用这两种输入模式。
如果用户不受信任(匿名用户在博客文章上发表评论),则用户应该无法输入(可能是恶意的,想想XSS)标记。
如果您的用户需要一些选项来格式化他们的内容,您可能应该考虑使用另一种类型的标记,例如BBCode。这可以防止用户将任何<script>
标签注入到可能显示给其他用户的内容中。
不过,您仍然需要从用户内容中去除任何 HTML 标记。