我过去已经构建了许多解决方案,人们通过webform输入数据,应用验证检查,在某些情况下使用正则表达式,所有内容都存储在数据库中。然后,此数据用于驱动其他页面上的输出。
我在这里有一个特殊情况,用户想要复制/粘贴大量文本(包含各种标题,链接等的多个段落) - 在进入数据库之前处理此问题的最佳方法是什么在需要退出时提供最佳输出?
到目前为止,我提出的最好的方法是将这些字段的所有输出保留在PRE标记中,并使用正则表达式在适当的位置添加链接。我有一个数据库放在一起的特殊关键字列表需要加粗或其他样式应用于它们工作正常。所以我可以使用这些方法制作这项工作,但在我看来,这可能是一种更优雅的方式。
答案 0 :(得分:2)
有很多方法可以格式化输出文本。您可以简单地使用pre
标记(如果您担心包装,CSS white-space
属性也支持pre-wrap
值,但浏览器对此的支持目前至少是粗略的)。
还有大量标记语言可用于更高级的格式化选项(其中一些列出here)。 Stack Overflow本身使用Markdown,我个人非常喜欢使用它。
但是,由于数据是从其他来源粘贴的,因此标记语言可能会干扰文本的格式化 - 在这种情况下,您可以使用正则表达式和htmlentities
等函数来推送自己的解决方案。 nl2br
无论你决定什么,我都建议将输入以原始形式存储在数据库中,这样你就可以随时追溯修改你的格式化程序。
答案 1 :(得分:0)
如果您期望进行大量格式化,则应该使用WYSIWYG编辑器。这些编辑器生成类似文字的工具栏,产品(希望)有效(x)html标记可以直接存储到数据库的文本字段中。以下是几个例子:
FCKeditor - 大量的选项/工具
Tinymce - 一个不错的选择。
Markdown - stackoverflow.com使用什么
FCKeditor和Tinymce都经过了彻底的测试,并且已被证明是可靠的。我对降价没有任何经验,但看起来很稳固。
我一直讨厌'论坛'格式标签,如[代码],[链接]等.Stackoverflow和其他人已经表明,提供一个开放的wysisyg编辑器是安全,可靠,并且非常容易使用。只需获取它给你的输出,通过某种类型的转义函数运行它来检查任何类型的注入,xss等,并存储在文本字段中。