2013-07-24 186 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被替换为整场比赛。