【问题标题】:How do I strip quotes from an input box using PHP?如何使用 PHP 从输入框中删除引号
【发布时间】:2011-01-18 01:17:51
【问题描述】:

我有这个:

<input name="title" type="text" class="inputMedium" value="' . $inputData['title'] . '" />

我想从用户输入中去掉引号,这样如果有人输入如下内容: “这是我的标题”它不会弄乱我的代码。

我试过了,但它不起作用: $inputData['title'] = str_replace('"', '', $_POST['title']);

【问题讨论】:

    标签: php replace user-input quotes


    【解决方案1】:

    如果我正确理解了这个问题,您想从$inputData['title'] 中删除",这样您的HTML 代码就不会混乱吗?

    如果是这样,“正确”的解决方案不是删除双引号,而是在执行实际输出之前转义它们。


    考虑到您正在生成 HTML,您应该使用 htmlspecialchars 函数;这样,双引号 (和其他几个字符) 将被编码为 HTML 实体,并且在注入 HTML 标记时不会造成任何问题。

    例如:

    echo '<input name="title" type="text" class="inputMedium" value="'
       . htmlspecialchars($inputData['title'])
       . '" />';
    

    注意:根据您的情况(尤其是关于您可能使用的编码/字符集),您可能需要将一些附加参数传递给htmlspecialchars


    一般来说,无论您使用哪种输出格式,您都应该始终对作为输出发送的数据进行转义。

    例如:

    • 如果你正在生成一些 XML 或 HTML,你应该使用htmlspecialchars
    • 如果要生成一些 SQL,则应使用 mysql_real_escape_string 或等效项,具体取决于您使用的数据库类型

    【讨论】:

    • 刚刚注意到:可以在输入 html 中使用单引号而不是双引号(例如 )。但是由于 htmlspecialchars 只留下单引号,这可能是一个安全漏洞?
    【解决方案2】:

    在这种情况下,用户输入应该通过htmlspecialchars() 运行。

    【讨论】:

      【解决方案3】:

      我强烈建议您在显示任何用户生成的任何内容之前使用 htmlentities($string, ENT_QUOTES)...

      【讨论】:

      • htmlentities 对我不起作用,只有 htmlspecialchars() 起作用。问题是由于某种原因 htmlentities 不能正确处理重音
      猜你喜欢
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多