2013-04-05 65 views
1

我試圖在$ 1之後在preg_replace替換中沒有空格的情況下添加「00」。

我的代碼:

$count = null; 
$returnValue = preg_replace('/de(.*)y/i', '$1 00', 'delipsumy', -1, $count); 

我希望有類似 '$ 1' '00' 的更換,其中,輸出應爲:

lipsum00(沒有任何空格)

我已經試過類似'$ 1'。'00'和'$ 100'但無效的工作

有什麼建議嗎?

回答

1

這在method's documentation(強調)解決:

當與替換模式,其中一個反向引用後面緊接着另一個號碼工作(即:在匹配模式之後立即放置文字編號),則不能使用熟悉的\ 1符號作爲反向引用。例如,\ 11會混淆preg_replace(),因爲它不知道您是否希望\ 1反向引用後跟一個文字1,或\ 11反向引用後面什麼都不是。 在這種情況下,解決方案是使用\ $ {1} 1。這會創建一個單獨的$ 1反向引用,將1作爲文字。

所以你的替換模式是'\${1}00'。因此,作爲一個例子:

// Output: H__e__ll__o__ W__o__rld 
echo preg_replace("/([aeiou])/", "__\${1}__", "Hello World"); 

看到它在行動:http://codepad.org/orbK5jdw

4

嘗試:

$returnValue = preg_replace('/de(.*)y/i', '\${1}00', 'delipsumy', -1, $count); 
相關問題