【问题标题】:sanitize string to make its content only to plain text清理字符串以使其内容仅显示为纯文本
【发布时间】:2011-10-31 11:40:36
【问题描述】:

我正在设计一个基本的电子商务应用程序,我有一个表单来添加产品。

有 2 个文本字段:产品名称和描述。

产品名称为input type="text",描述为textarea

由于用户可以输入任何内容(最坏的情况),我想删除所有标签(无论是 PHP、HTML、JS、CSS 还是任何东西),以便我得到纯文本(没有任何标签)

我怎样才能做到这一点? 基本上,我需要清理字符串,所以任何使其成为纯文本

【问题讨论】:

    标签: php


    【解决方案1】:

    有一个简单的方法。

    对于php<5.2.0 的版本,当我们必须验证或过滤用户数据时,我们通常使用正则表达式和/或复杂的php 函数。
    其中一些正则表达式很难理解/记住。所以通常大多数编码人员在谷歌搜索以收集正确的正则表达式。

    对于php>=5.2.0,您可以使用filter_var

    【讨论】:

    • 第二个链接坏了
    【解决方案2】:

    我建议使用 strip_tags 函数,或许可以试试这样:

    $cleaner_input = trim(strip_tags($input)); // trim is there for good measure
    

    确保您也在处理magic quotes,否则实际的引号字符可能会成为问题并在它们之前出现反斜杠(它们正在被贬值,但在大多数托管环境中仍然相关)。

    请记住,strip_tags 会在标签之间保留文本,因此对于 JavaScript/CSS 来说会有些问题,但至少浏览器会将其呈现为纯文本。向正在输入数据的用户提供预览,他们会发现他们搞砸了。

    希望有帮助!

    【讨论】:

      【解决方案3】:

      如果您只想从用户输入中删除所有标签,那么您可以使用strip_tags() 函数。

      更好的选择是通过HTML Purifier 运行用户输入。这是一个更彻底的清洁。

      【讨论】:

      • 当需要“重型武器”时,我一定会把它添加到我的武器库中——这看起来像一个很棒的图书馆!
      • 我认为如果不需要他不需要 HTML 标记来格式化文本,那么他可以只使用 htmlspecialchars() 进行输出。应该够了。
      • 这保留了 "/\r|\n/" .. 看到这个link 删除那些..
      猜你喜欢
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 2023-01-06
      • 2017-05-31
      • 2021-07-18
      • 2019-11-11
      相关资源
      最近更新 更多