str_replace()为其输入添加一个额外的空格

时间:2015-02-08 18:03:16

标签: php sql string str-replace quotes

有一个奇怪的问题,经过几分钟的摆弄,我无法弄清楚。

    $quotifiedValues = "'" . str_replace(",", "', '", $string) . "'";

我有这一行来引用为SQL准备的东西。

让我们假设$ string =" key,value"。

$ quotifiedValues =应该成为"' key',' value'"。

它实际上变成了"' key','值'"

这里至关重要的是存在一个额外的空间。单词值以额外空格为前缀。我检查了输入,当然,没有额外的空间。但我无法从str_replace()的输出中消除它。任何有关正在发生的事情的建议都非常感谢。

2 个答案:

答案 0 :(得分:2)

制作

$quotifiedValues = "'" . str_replace(", ", "', '", $string) . "'";

请注意,我们现在替换", "而不是","

答案 1 :(得分:1)

使用preg_replace

$string = "key  , value";
echo "'" . preg_replace("/\s*,\s*/", "', '", $string) . "'";

严肃地说,考虑使用准备好的陈述。这样的黑客可以让你在某一天或另一天遇到麻烦。