2010-06-02 76 views
0

我使用php的str_replace函數來替換一些文本。下面的例子。str_replace函數將不會替換字符串,如果我使用單引號

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

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

在第一種情況下,它會替換文本,但在第二種情況下,它不會這樣做。兩者有什麼區別?

回答

1

'"之間有difference。擺脫單引號字符串中的\

編輯:爲了澄清,雙引號的字符串做了一些擴展(請參閱鏈接),而單引號的沒有。 $需要在雙引號字符串內用\轉義,但不能用單引號字符串轉義。在後一種情況下,它會直接導致\$

0

美元符號和花括號在雙引號字符串中有特殊含義。 $用於將變量中的內容直接放入字符串中。 {}用於包裝PHP變量以防其含義不明確。

例如"$hello"會把變量$hello的內容轉換成字符串,而"{$hell}o"會把變量$hell的內容轉換成字符串,隨後字面字母o。

單引號根本沒有這個(爲簡單起見,在引用更復雜的字符串時通常更可取)。因此'{$hell}o'將是一個包含實際字符{$hell}o的字符串。

這是有點不清楚你想要取代什麼確切的字符串。要用{x-$v}替換字面{x+$v},則使用:

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