我有这个:
<input name="title" type="text" class="inputMedium" value="' . $inputData['title'] . '" />
我想从用户输入中去除引号,这样如果有人输入如下内容: “这是我的标题”,它不会弄乱我的代码。
我试过了,但没用:
$inputData['title'] = str_replace('"', '', $_POST['title']);
最佳答案
如果我对问题的理解正确,你想从 $inputData['title']
中删除 "
,这样你的 HTML 代码就不会乱了吗?
如果是这样,“正确”的解决方案不是删除双引号,而是在执行实际输出之前转义它们。
考虑到您正在生成 HTML,**您应该使用 [`htmlspecialchars`][1] 函数**;这样,双引号 *(和其他几个字符)* 将被编码为 HTML 实体,并且在注入(inject)到 HTML 标记中时不会造成任何问题。
例如:
echo '<input name="title" type="text" class="inputMedium" value="'
. htmlspecialchars($inputData['title'])
. '" />';
注意:根据您的情况(尤其是关于您可能使用的编码/字符集),您可能会将一些额外的参数传递给 htmlspecialchars
。
一般来说,无论您使用哪种输出格式,您都应该始终对作为输出发送的数据进行转义。
例如:
- 如果您要生成一些 XML 或 HTML,您应该使用
htmlspecialchars
- 如果你正在生成一些 SQL,你应该使用
mysql_real_escape_string
,或等效物,具体取决于您使用的数据库类型
关于php - 如何使用 PHP 从输入框中删除引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284130/