使用 strip_tags() 和 preg_replace() 显示所见即所得/TinyMCE 文本编辑器中输入的文本
Using strip_tags() and preg_replace() to display text entered in a WYSIWYG/TinyMCE Text Editior
早上好,
问题是这样的:我有一些文本是通过文本编辑器(所见即所得/TinyMCE)输入的,并作为帖子显示在其他地方。 我们遇到的问题是文本在显示为帖子时会丢失其格式。 在挖掘代码后,我发现这是通过 strip_tags() + echo preg_replace() 组合完成的。 我仍然是PHP的新手,但我能够弄清楚:
- strip_tags() 正在取出格式(b/c就是这样滚动的)
- 我可以添加并显示粗体和斜体文本
- 带下划线和删除线的文本是 CSS 样式,将代码(因为它保存在数据库表上)添加到 strip_tags() 列表中并没有解决问题
我的问题是:我可以修改现有代码来解决这个问题,还是应该使用其他东西(htmlentities())?
编辑:我尝试了html实体,但它失败了。编辑:我只添加了标签,问题解决了50%。 我的文本带有下划线,但它显示的文本低于其后面的无下划线文本。 就好像带下划线的文本被视为潜台词或其他东西一样。
代码片段:
<div class="display_text_area">
<?php $text = strip_tags(str_ireplace("</p>", "</p><br/>",
$text_detail->description),
'<font><ul><li><br/><strong><em><span style="text-decoration: underline;">'); ?>
<?php echo preg_replace('/(<br[^>]*>'s*){2,}/', '<br/>', $text); ?>
</div>
我在这里留下标签以表明 (a) 我试过了,(b) 它不起作用。 所以(c)我知道它需要被删除或修改。
提前非常感谢。
关键是TinyMCE返回名义上有效的富HTML,在HTML页面中使用之前不需要剥离或转义。 但是,您不能假设TinyMCE编辑器正在客户端上运行,因为您可能会被直接发布包含XSS攻击的响应的人利用。
IIRC,TinyMCE默认返回XHTML。 您需要使用诸如HTML Purifier之类的库来确保任何返回的HTML都是正确的。
相关文章:
- TinyMCE从MSWord粘贴的文本在所有文本下加下划线
- TinyMCE在新添加的文本区域
- 在不更改HTML源代码的情况下,在管理员TinyMCE编辑器中突出显示文本
- PHP:Can't填充TinyMCE文本区域
- Wordpress TinyMCE在从文本切换到视觉时,如果锚标记包裹块元素,则会删除锚标记
- tinyMCE不会添加特定文本区域的Control
- 从 tinymce 文本区域检索数据时出现问题
- TinyMCE文本编辑器最大字符限制
- 当我在tinmyce.int()中编写设置函数时,tinymce消失了,只有纯文本区域可见
- Tinymce删除<html>在文本区域中输出时标记
- TinyMCE-允许文本作为<表>和/或<tr>
- Tinymce-4:仅从链接中提取文本
- 通过HTML设置TinyMCE文本区域的内容
- 使用 strip_tags() 和 preg_replace() 显示所见即所得/TinyMCE 文本编辑器中输入的文本
- TinyMCE 编辑输入值和按钮文本
- 任何防止在从 tinymce 容器中单击输入文本时失去焦点的方法
- Knockout JS问题与tinymce文本区域
- 初始化为tinyMCE文本区域,并在选定的tinyMCE编辑器上设置内容
- 如何在带有文本区域的symfony2 twig文件中使用TinyMCE编辑器
- 检测 TinyMCE 文本区域中的按键事件