【问题标题】:str_replace() adding an extra space to its inputstr_replace() 在其输入中添加一个额外的空间
【发布时间】:2015-02-08 18:03:16
【问题描述】:

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

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

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

假设 $string = "key, value"。

$quotifiedValues = 应该变成“'key', 'value'”。

它实际上变成了“'key', 'value'”。

这里的关键是额外空间的存在。单词值的前缀是一个额外的空格。我检查了输入,果然没有多余的空间。但是我无法从 str_replace() 的输出中消除它。非常感谢您对正在发生的事情提出任何建议。

【问题讨论】:

  • 只是一个小建议:你真的应该看看准备好的陈述。

标签: php sql string str-replace quotes


【解决方案1】:

做到这一点

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

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

【讨论】:

  • 问题中没有提到,但是如果没有空间怎么办。替换会失败。 -1.
【解决方案2】:

使用preg_replace

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

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

【讨论】:

  • 问题中没有提到,但是如果没有逗号怎么办。替换会失败。 -1。 (不是真的)
  • SQL 查询需要逗号。空格是可选的。
猜你喜欢
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多