如何使用 PHP 从输入框中删除引号

Posted

技术标签:

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

我有这个:

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

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

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

【问题讨论】:

【参考方案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 不能正确处理重音

以上是关于如何使用 PHP 从输入框中删除引号的主要内容,如果未能解决你的问题,请参考以下文章

如何从数值数组值中删除引号

如何删除数据框中的引号[重复]

如何在php中删除从json “x”:“y”到x:y的双引号[关闭]

如何从R中的字符串中删除单引号?

如何从 CURL 响应 PHP API 的 JSON 字符串中删除引号、不需要的数据

如何从 .NET 框架 C# 中的文本框中删除双逗号?