我使用php的str_replace函数来替换一些文本。示例如下。
str_replace("{x+{\$v}}", "{x-{\$v}}", $this->introtext);
str_replace('{x+{\$v}}', '{x-{\$v}}', $this->introtext);
在第一种情况下,它替换文本,但在第二种情况下,它不会这样做。两者有什么区别?
答案 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);