如果字符串以数字开头并包含引号,PHP 添加斜杠将无法按预期工作


PHP addslashes not working as expected if a string starts with numbers and contains a quotation mark

我有一个带有文本框"size_txt"的表单,该文本框存储了一个表示大小选择的字符串。

<input type="text" name="size_txt" id="size_txt" style="display: none;" /> 

该值将发布到另一页,并由此代码检索

$new_size=addslashes($_POST['size_txt']);

不幸的是,它需要存储英寸的缩写,即"引号

如果字符串是"10"中等,则 $new_size 的值是"10"

但是,如果字符串是"中等 10",则 $new_size 的值是"中等 10/"

有没有人遇到过这种行为并弄清楚如何解决?

感谢您的任何帮助

是的,问题就在那里。

请注意,当在包含西里尔字符的字符串上使用 addslashes() 时,addslashes() 会完全混淆字符串,使其无法使用。

解决方案的数量

1) 使用mysql_real_escape_string而不是添加斜杠

2)尝试以下代码,如str_replace

$myString = str_replace("'", "''", $myString);
$myString = str_replace('"', "'+String.fromCharCode(34)+'", $myString);

如果您有STIL问题,请告诉我。

问候

对于您的用例,最好只使用 htmlspecialchars() 来转义"