0

我正在尝试使用 preg_replace 为大型文本文件开发批量查找和替换。我以前没有这样做过,但我想我基本上了解了这个过程。我可以直接将 x 替换为 y。(下面数组中的数字 0 和 2 工作正常。)但我不知道如何进行插入以保留匹配的文本。我知道这应该很简单,并且我试图模仿一堆例子。

当我运行下面的代码时,这句话变成了“夜城的兔子街门”。但我正试图将“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);

?>
4

1 回答 1

1

改变

replacements[1] = '$1Rabbit';

replacements[1] = '$0Rabbit';

$1, $2, 等等被替换为第 N 个捕获组的匹配,而$0被替换为整个匹配。

于 2013-07-24T18:28:13.187 回答