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?);

今の問題は、return_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 に答える