我使用php的str_replace函數來替換一些文本。下面的例子。str_replace函數將不會替換字符串,如果我使用單引號
str_replace("{x+{\$v}}", "{x-{\$v}}", $this->introtext);
str_replace('{x+{\$v}}', '{x-{\$v}}', $this->introtext);
在第一種情況下,它會替換文本,但在第二種情況下,它不會這樣做。兩者有什麼區別?
我使用php的str_replace函數來替換一些文本。下面的例子。str_replace函數將不會替換字符串,如果我使用單引號
str_replace("{x+{\$v}}", "{x-{\$v}}", $this->introtext);
str_replace('{x+{\$v}}', '{x-{\$v}}', $this->introtext);
在第一種情況下,它會替換文本,但在第二種情況下,它不會這樣做。兩者有什麼區別?
'
和"
之間有difference。擺脫單引號字符串中的\
。
編輯:爲了澄清,雙引號的字符串做了一些擴展(請參閱鏈接),而單引號的沒有。 $
需要在雙引號字符串內用\
轉義,但不能用單引號字符串轉義。在後一種情況下,它會直接導致\$
。
美元符號和花括號在雙引號字符串中有特殊含義。 $
用於將變量中的內容直接放入字符串中。 {}
用於包裝PHP變量以防其含義不明確。
例如"$hello"
會把變量$hello
的內容轉換成字符串,而"{$hell}o"
會把變量$hell
的內容轉換成字符串,隨後字面字母o。
單引號根本沒有這個(爲簡單起見,在引用更復雜的字符串時通常更可取)。因此'{$hell}o'
將是一個包含實際字符{$hell}o
的字符串。
這是有點不清楚你想要取代什麼確切的字符串。要用{x-$v}
替換字面{x+$v}
,則使用:
str_replace('{x+$v}', '{x-$v}', $this->introtext);