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) . "'";

严肃地说,考虑使用准备好的语句。像这样的黑客攻击有一天会给你带来麻烦。