我正在努力逃避使用addslashes()和stripslashes()的双引号和单引号在一个迷你Web应用程序中,它只是插入值并在表单中检索这些值以进行编辑,以及要查看的常规页面属性。最后,我决定使用此函数来更改单引号和双引号:
function fixQuotes($string) {
$string = str_replace("'", ''', $string);
$string = str_replace('"', '"', $string);
return $string;
}
由于我没有任何关于使用此方法之前发生的事情的细节,我真的不能问出错了什么。相反,我想知道使用此函数用html实体替换单引号和双引号是否有任何缺点。
答案 0 :(得分:4)
如果不知道数据的来源,你不能只是神奇地“修复”引号。
将数据插入数据库时,使用数据库API的转义函数将其转义。如果您正在使用旧版MySQL API(不应该使用新代码,因为它已被弃用),请使用mysql_real_escape_string。如果您使用的是MySQL改进的API,请使用mysqli_real_escape_string。如果您使用的是PDO,请使用bindValue或execute input_parameters
参数或quote。
当您将文字回显到HTML网页时,请使用htmlspecialchars。