如果我使用单引号,str_replace函数不会替换字符串

时间:2010-06-02 11:18:52

标签: php str-replace

我使用php的str_replace函数来替换一些文本。示例如下。

str_replace("{x+{\$v}}", "{x-{\$v}}", $this->introtext);

str_replace('{x+{\$v}}', '{x-{\$v}}', $this->introtext);

在第一种情况下,它替换文本,但在第二种情况下,它不会这样做。两者有什么区别?

2 个答案:

答案 0 :(得分:1)

'"之间有difference。摆脱单引号字符串中的\

编辑:为了澄清,双引号字符串会进行一些扩展(请参阅链接),而单引号字符串则不会。 $需要在双引号字符串中使用\进行转义,但不能在单引号字符串中进行转义。在后一种情况下,它实际上会产生\$

答案 1 :(得分:0)

当在双引号字符串中时,美元符号和花括号具有特殊含义。 $用于将变量中的内容直接放入字符串中。 {}用于包装PHP变量,以防它们的含义不明确。

例如"$hello"会将变量$hello的内容放入字符串中,而"{$hell}o"会将变量$hell的内容放入字符串中,然后是文字字母o。

单引号根本没有这个(为简单起见,在引用更复杂的字符串时通常更好)。因此'{$hell}o'将是一个包含实际字符{$hell}o的字符串。

有点不清楚你要替换的确切字符串是什么。要使用{x+$v}替换文字{x-$v},请使用:

str_replace('{x+$v}', '{x-$v}', $this->introtext);