【问题标题】:Best way to handle LARGE strings of text going into a database?处理进入数据库的大文本字符串的最佳方法是什么?
【发布时间】:2009-02-23 18:05:40
【问题描述】:

过去我已经构建了许多解决方案,人们通过网络表单输入数据,应用验证检查,在某些情况下使用正则表达式,所有内容都存储在数据库中。然后,此数据将用于驱动其他页面上的输出。

我在这里有一个特殊情况,用户想要复制/粘贴大量文本(具有各种标题、链接等的多个段落)——在它进入数据库之前处理这个问题的最佳方法是什么?在需要恢复时提供最佳输出?

到目前为止,我想出的最好的方法是将这些字段的所有输出粘贴在 PRE 标记中,并使用正则表达式在适当的地方添加链接。我有一个数据库,其中包含一个特殊关键字列表,这些关键字需要加粗或应用其他样式,效果很好。所以我可以使用这些方法制作这项工作,但在我看来,可能有一种更优雅的方法。

  • 尼古拉斯

【问题讨论】:

  • 我已经看到了使用
     标签的 huge 问题,也就是说,如果我无法在某个时候将其包裹起来,我们将会遇到一个问题...
  • 我在理解问题以及在有大量数据时遇到的具体问题时遇到了一些麻烦。
  • 粘贴到文本区域的文本在 3-5+ 打印页之间。

标签: php database formatting string


【解决方案1】:

您可以通过多种方式格式化文本以进行输出。您可以简单地使用您提到的pre 标签(如果您担心包装,CSS white-space 属性也支持pre-wrap 值,但浏览器对此的支持目前充其量是粗略的)。

还有大量标记语言可用于更高级的格式化选项(其中一些列在here)。 Stack Overflow 本身使用Markdown,我个人非常喜欢使用它。

但是,由于数据是从其他来源粘贴的,标记语言可能会干扰文本的格式 - 在这种情况下,您可以推出自己的解决方案,也许使用正则表达式和函数,如 htmlentities 和 @987654325 @。

无论您决定如何,我都建议您将输入以其原始形式存储在数据库中,以便您可以随时追溯修改您的格式化例程。

【讨论】:

  • nl2br() 多么出色的功能,我不熟悉这个。现在打算试试 htmlentities() 和 nl2br() 的组合。
  • 只需将 nl2br() 函数与一些数据库元表(用于控制关键字突出显示和其他风格元素)结合使用就可以了。感谢亚历克斯的帮助!
【解决方案2】:

如果您期望大量的格式设置,您可能应该使用所见即所得的编辑器。这些编辑器生成类似单词的工具栏,这些工具栏生成(希望)有效的 (x)html 标记,可以直接存储到数据库中的文本字段中。以下是几个例子:

FCKeditor - 大量的选项/工具

Tinymce - 一个不错的选择。

Markdown - stackoverflow.com 使用什么

FCKeditor 和 Tinymce 都经过了彻底的测试,并被证明是可靠的。我没有任何降价经验,但它看起来很可靠。

我一直讨厌“论坛”格式化标签,如 [code]、[link] 等。Stackoverflow 和其他人已经证明,提供开放的 wysisyg 编辑器是安全、可靠且非常易于使用的。只需获取它给你的输出,通过某种转义函数运行它以检查任何类型的注入、xss 等,然后存储在文本字段中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2018-08-30
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    相关资源
    最近更新 更多