2010-01-04 3 views
1

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

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

Спасибо!

ответ

0

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

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

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

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); 
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); 
Смежные вопросы