0

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

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

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

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

4

2 回答 2

1

和之间有区别。去掉里面的单引号字符串。'"\

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

于 2010-06-02T11:20:53.780 回答
0

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

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

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

有点不清楚您要替换的确切字符串。{x+$v}{x-$v}then替换文字:

str_replace('{x+$v}', '{x-$v}', $this->introtext);
于 2010-06-02T11:33:41.047 回答