我有这个:
<input name="title" type="text" class="inputMedium" value="' . $inputData['title'] . '" />
我想从用户输入中删除引号,以便在有人输入以下内容时: “这是我的头衔”它不会搞砸我的代码。
我试过这个并且它不起作用: $ inputData ['title'] = str_replace(''','',$ _POST ['title']);
答案 0 :(得分:5)
如果我正确理解了这个问题,您想要从"
删除$inputData['title']
,这样您的HTML代码就不会搞砸了吗?
如果是这样,“正确”解决方案不是删除双引号,而是在执行实际输出之前转义它们。
考虑到您正在生成HTML,您应该使用htmlspecialchars
函数;这样,双引号(以及其他几个字符)将被编码到HTML实体,并且在注入HTML标记时不会造成任何麻烦。
例如:
echo '<input name="title" type="text" class="inputMedium" value="'
. htmlspecialchars($inputData['title'])
. '" />';
注意:根据您的情况(尤其是关于您可能正在使用的编码/字符集),您可能会将一些额外的参数传递给htmlspecialchars
。
一般来说,无论您使用何种输出格式,都应始终将输出的数据作为输出转义。
例如:
htmlspecialchars
mysql_real_escape_string
或等效项,具体取决于您正在使用的数据库类型答案 1 :(得分:1)
用户输入应该通过htmlspecialchars()
运行,以便在这种情况下使用。
答案 2 :(得分:-2)
我强烈建议您在显示用户生成的任何内容之前使用 htmlentities($ string,ENT_QUOTES) ...