2013-07-24 223 views
0

我正在嘗試使用preg_replace開發批量查找和替換大型文本文件。我以前沒有這樣做,但我想我基本上了解這個過程。我毫不費力地直接替換y來替換x。 (下面的數組中的數字0和2工作正常。)但我不知道如何做一個插入,保持匹配的文本。我知道這應該很簡單,我試圖模仿一堆例子。preg_replace in php not

當我運行下面的代碼時,這個句子變成了「夜晚的兔子街道」。但是我試圖把'Mabbot'變成'MabbotRabbit'。我怎樣才能保留'Mabbot'?

謝謝!

<?php 

$content = "The Mabbot street entrance of nighttown"; 

$patterns = array(); 
$patterns[0] = '/\n/'; 
$patterns[1] = '/Mabbot/'; 
$patterns[2] = '/entrance/'; 
$replacements = array(); 
$replacements[0] = '<br/>'; 
$replacements[1] = '$1Rabbit'; 
$replacements[2] = 'mentrance'; 
ksort($patterns); 
ksort($replacements); 
echo preg_replace($patterns, $replacements, $content); 

?> 
+1

使用'$ 0'替換匹配的字符串,而不是'$ 1'。 – Barmar

+0

Bingo。謝謝! – user2193632

回答

1

變化

replacements[1] = '$1Rabbit'; 

replacements[1] = '$0Rabbit'; 

$1$2,等會被替換成比賽第N捕獲組,而$0被替換爲整場比賽。