我試圖在$ 1之後在preg_replace替換中沒有空格的情況下添加「00」。
我的代碼:
$count = null;
$returnValue = preg_replace('/de(.*)y/i', '$1 00', 'delipsumy', -1, $count);
我希望有類似 '$ 1' '00' 的更換,其中,輸出應爲:
lipsum00(沒有任何空格)
我已經試過類似'$ 1'。'00'和'$ 100'但無效的工作
有什麼建議嗎?
我試圖在$ 1之後在preg_replace替換中沒有空格的情況下添加「00」。
我的代碼:
$count = null;
$returnValue = preg_replace('/de(.*)y/i', '$1 00', 'delipsumy', -1, $count);
我希望有類似 '$ 1' '00' 的更換,其中,輸出應爲:
lipsum00(沒有任何空格)
我已經試過類似'$ 1'。'00'和'$ 100'但無效的工作
有什麼建議嗎?
這在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
嘗試:
$returnValue = preg_replace('/de(.*)y/i', '\${1}00', 'delipsumy', -1, $count);