2014-02-18 67 views
0

我正在构建一个应用程序,要求用户一次输入大块文本,如段落。我安装了一个编辑器(CKeditor),为用户提供了一个很好的界面来编辑他们的文本等。问题是我不能在输入数据之前清理输入,因为它会擦除所有的HTML,文本会丢失段落和其他样式。安全所见即所得选项

有没有一种方法可以安全地存储这些数据并保持基本样式,如段落甚至文本颜色?

+0

你需要HTML代码吗?或者你可能会考虑实施类似BBCode的东西吗?有一些所见即所得编辑器有一个BBCode插件,所以你可以清理帖子,但保持风格。如果您在JS/jQuery中拥有一些技术诀窍,您可以轻松地使用BBCode实现您自己的所见即所得。 – lxndr

+0

这是StackOverflow上数十个问题的重复。请参阅http://stackoverflow.com/questions/5512712/sanitizing-html-input或http://stackoverflow.com/questions/2721184/php-html-sanitizer或http://stackoverflow.com/questions/2319956/are -there-any-good-php-based-html-filters-available或http://stackoverflow.com/questions/8442467/filter-html-on-php – Reinmar

回答

0

这是我所做的。我不得不与工作和建立定制公告板和论坛系统。当你有人试图放置风格化的内容,图像,视频,表情,等等......你需要某种形式的内容放置,同时也消毒这些帖子。

您有一些选择。我的建议是找到一个有BBCode插件的编辑器。当帖子进入你的数据库时,任何具有HTML元素的东西都会出现在括号内(即; [])而不是打开/关闭标签。所以如果你想加粗东西,你可以使用[B]加粗这个[/ B]。然后你做一个简单的功能,去除这些BBCode元素,并用适当的HTML代码替换它们。

你可以做的另一件事,我不推荐,但看到发生,是str_replace所有打开和关闭标记与他们的html实体,当你插入到数据库中,然后str_replace所有相应的html实体到当您显示帖子时打开和关闭标签。

我之所以推荐BBCode或者至少是某种降价,是因为您可以完全关闭用户利用该帖子攻击您的能力,同时让他们设置帖子的风格。

HTML BBCode Parser (Pear Package) - 如果您使用BBCode路线,这将帮助您。

CKEditor BBCode Plugin - 您可以将其添加到您的CKEditor所见即所得并运行。

+0

谢谢!这听起来完全像我在找的东西。我要检查一下。 – user3324581