2011-06-15 52 views
3

如何在以下語句中替換部分中的$?正則表達式轉義問題

$tmp_code = preg_replace('/(<\?=\$([a-zA-Z0-9\_]+)\?>)/me','"{$$2}"',$tmp_code); 

被替換的文本應該像{$ test}但是我不知道如何轉義第一個$。我試過\ $,但沒有做任何事情。

+2

http://www.google.co.uk/search?q=preg_replace+escape+dollar? – 2011-06-15 13:25:57

+0

'$ tmp_code'在該行之前包含什麼? – ssapkota 2011-06-15 13:38:22

回答

2

通常,您應該比/e表達式修飾符更喜歡preg_replace_callback。但取決於你想要做什麼,有多種解決方法。

可以分割字符串表達式:

'"{"."$"."$2"."}"', $tmp 

或者使用替代佔位符語法和逃避{$所以它不會解釋爲變量變量雙引號內:

'"{\\\$\2}"' 

(不,我不知道,只是在附近搗亂。)

+0

選項#1工作得很好,非常感謝! – Joe 2011-06-15 13:38:11