如何使用 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的双引号[关闭]