1

我试图在我的数据文件中找到某些块并替换其中的某些内容。之后将整个内容(带有替换数据)放入一个新文件中。我目前的代码如下所示:

$content = file_get_contents('file.ext', true);

//find certain pattern blocks first
preg_match_all('/regexp/su', $content, $matches);

foreach ($matches[0] as $match) {
  //replace data inside of those blocks
  preg_replace('/regexp2/su', 'replacement', $match);
}

file_put_contents('new_file.ext', return_whole_thing?);

现在的问题是我不知道如何返回_whole_thing。基本上,file.ext 和 new_file.ext 几乎相同,除了替换的数据。有什么建议应该代替return_whole_thing什么?

谢谢!

4

3 回答 3

2

你甚至不需要 preg_replace; 因为您已经有了匹配项,所以您可以像这样使用普通的 str_replace :

$content = file_get_contents('file.ext', true);

//find certain pattern blocks first
preg_match_all('/regexp/su', $content, $matches);

foreach ($matches[0] as $match) {
  //replace data inside of those blocks
  $content = str_replace( $match, 'replacement', $content)
}

file_put_contents('new_file.ext', $content);
于 2010-01-04T23:16:11.460 回答
0

我不确定我是否理解你的问题。您能否发布一个示例:

  • file.ext,原始文件
  • 您要使用的正则表达式以及要替换的匹配项
  • new_file.ext,你想要的输出

如果您只想阅读file.ext,替换正则表达式匹配并将结果存储在 中new_file.ext,您只需要:

$content = file_get_contents('file.ext');
$content = preg_replace('/match/', 'replacement', $content);
file_put_contents('new_file.ext', $content);
于 2010-01-04T23:25:39.063 回答
0

最好加强正则表达式以在原始模式中找到子模式。这样你就可以调用 preg_replace() 并完成它。

$new_file_contents = preg_replace('/regular(Exp)/', 'replacement', $content);

这可以通过正则表达式中的“( )”来完成。快速谷歌搜索“正则表达式子模式”导致了这个

于 2010-01-04T23:32:49.100 回答