【发布时间】:2019-10-31 15:17:29
【问题描述】:
为什么在单引号前删除 \ 而不是双引号?
更新:下面的代码有效,但当单个 ' 或 " 在第一个位置时无效。有没有办法解决这个问题?
输入来自我无法控制人们输入内容的表单。
$x[0] = $_POST['line1'];
$x[1] = $_POST['line2'];
$x[2] = $_POST['place'];
//check for apostrophes and quotes
for($i=0;$i<3;$i++){
while( strpos($x[$i], "\'") != false){
$pos = strpos($x[$i], "\'");
$x[$i] = substr_replace($x[$i],"",$pos,1);
}
while( strpos($x[$i], '\"') != false){
$pos = strpos($x[$i], '\"');
$x[$i] = substr_replace($x[$i],"",$pos,1);
}
【问题讨论】:
-
你也可以用引号替换你的内部循环...
$x[$i] = str_replace(["\\\"","\'"], ['"', "'"], $x[$i]); -
刚刚检查过,
for($i=0;$i<3;$i++){ $x[$i] = str_replace(["\\\"","\'"], ['"', "'"], $x[$i]);}似乎工作 -
对此感到抱歉。我又试了一次,它就像一个魅力。您的标记为重复项也是正确的。我将 != 更改为 !== ,这也有效。谢谢