我在我的网站上使用tinyMCE作为我的文本编辑器,我希望在将文本保存到我的数据库之前重新格式化文本(将& rsquo;标记更改为'然后更改为')。我找不到使用tinyMCe这样做的简单方法,并使用htmlentities()更改包括<>在内的所有内容。有什么想法吗?
答案 0 :(得分:8)
您可以像下面这样使用strip_tags($str, $allowed_tags)
:
$txt = strip_tags($txt, '<p><a><br>');
答案 1 :(得分:1)
直接来自PHP手册:strip_tags()
$ allowable_tags变量允许您定义允许标记的字符串。您可以使用此可选的第二个参数来指定不应剥离的标记。
答案 2 :(得分:1)
tinyMCE允许您指定允许标签的“白名单”,这将删除列表中未包含的任何标签:
tinyMCE.init({
... // other init instructions
valid_elements: 'p,a[href],br',
});
在我们自己的项目中,我们将此白名单与内部转换器结合在一起,将HTML转换为数据库的BB格式,然后在需要打印到页面时再次返回HTML。
更新:既然问题已被编辑为更清晰,我可以看到上面输入的内容无法解决问题。提问者想要的是一种转换字符实体的方法,同时保持HTML标签不受影响。
在我们自己的项目中,我们使用的内部转换器完成了这项工作。从HTML转换为内部表示时,编码字符将转换为字符本身;转换回HTML时,会编码更高的字符。这是以逐个字符,类似解析器的方式完成的。然而,这种方法可能太复杂,无法满足您的需求。
许多人使用的快捷方式是使用一系列正则表达式,但您可能会发现很难以这样的方式排列正则表达式,以便同时保留&符号&
和分号;
时间翻译字符实体
。你还会发现要覆盖每个可能的角色实体,你需要几十个正则表达式。
答案 3 :(得分:1)
这取决于您要保留的标签。我假设你想要使用TinyMCE的所有功能,所以文本可以包括像表格结构的nexted标签。然后没有简单的方法(一种方法是使用PHP Document Object Model来解析html文档。
但是TinyMCE有几个configuration选项用于实体编码。我建议您查看TinyMCE手册中的配置选项entity_encoding ,entities和encoding。
答案 4 :(得分:1)
TinyMCE和FCK都有大量的配置选项。文档可能很难搜索,但值得付出努力。
TinyMCE允许您使用'entity_encoding'选项指定实体编码。可以在创建编辑器时指定它。它可能看起来像这样......
tinyMCE.init({
entity_encoding:'数字'
});
这会改变像&amp; rsquo这样的标签。进入&amp;#39;。