str_replace() 添加一个额外的 space 到它的输入
str_replace() adding an extra space to its input
有一个奇怪的问题,经过几分钟的摆弄我无法弄清楚。
$quotifiedValues = "'" . str_replace(",", "', '", $string) . "'";
我有这行来引用 SQL 准备好的东西。
让我们假设 $string = "key, value".
$quotifiedValues = 应该变成“'key', 'value'”.
它实际上变成了“'key',‘值’”。
这里的关键是存在一个额外的 space。单词值的前缀是额外的 space。我检查了输入,果然,那里没有额外的 space。但是我无法从 str_replace() 的输出中消除它。非常感谢任何关于正在发生的事情的建议。
做到这一点
$quotifiedValues = "'" . str_replace(", ", "', '", $string) . "'";
请注意,我们现在替换 ", "
而不是 ","
。
使用preg_replace
.
$string = "key , value";
echo "'" . preg_replace("/\s*,\s*/", "', '", $string) . "'";
严肃地说,考虑使用准备好的语句。像这样的黑客攻击有一天会给你带来麻烦。
有一个奇怪的问题,经过几分钟的摆弄我无法弄清楚。
$quotifiedValues = "'" . str_replace(",", "', '", $string) . "'";
我有这行来引用 SQL 准备好的东西。
让我们假设 $string = "key, value".
$quotifiedValues = 应该变成“'key', 'value'”.
它实际上变成了“'key',‘值’”。
这里的关键是存在一个额外的 space。单词值的前缀是额外的 space。我检查了输入,果然,那里没有额外的 space。但是我无法从 str_replace() 的输出中消除它。非常感谢任何关于正在发生的事情的建议。
做到这一点
$quotifiedValues = "'" . str_replace(", ", "', '", $string) . "'";
请注意,我们现在替换 ", "
而不是 ","
。
使用preg_replace
.
$string = "key , value";
echo "'" . preg_replace("/\s*,\s*/", "', '", $string) . "'";
严肃地说,考虑使用准备好的语句。像这样的黑客攻击有一天会给你带来麻烦。