Вопрос

Я пытаюсь найти некоторые определенные блоки в моем файле данных и заменить что-то внутри них.После этого поместите все это (с замененными данными) в новый файл.Мой код на данный момент выглядит примерно так:

$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?

Спасибо!

Это было полезно?

Решение

Вероятно, лучше всего усилить ваше регулярное выражение, чтобы найти подшаблон в исходном шаблоне.Таким образом, вы можете просто вызвать preg_replace() и покончить с этим.

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

Это можно сделать с помощью "( )" внутри регулярного выражения.Быстрый поиск в Google по запросу "подшаблоны регулярных выражений" привел к это.

Другие советы

Вам даже не нужен 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);

Я не уверен, что понимаю вашу проблему.Не могли бы вы, возможно, опубликовать пример:

  • 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top