preg_match_all sorunları içine preg_replace

3 Cevap php

Benim veri dosyasında belli blokları bulmak ve bunların içinde bir şey değiştirmek için çalışıyorum. Bundan sonra yeni bir dosya içine (yerine verileri ile) her şeyi koymak. Şu anda benim kod şöyle görünür:

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

Now the problem is I don't know how to return_whole_thing. Basically, file.ext and new_file.ext are almost the same except of the replaced data. Any suggestion what should be on place of return_whole_thing?

Teşekkür ederiz!

3 Cevap

Bu orijinal desen içindeki bir alt modelin bulmak için normal ifadenizi güçlendirmek için muhtemelen en iyisidir. Bu şekilde sadece preg_replace () çağırabilirsiniz ve onunla yapılabilir.

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

Bu düzenli ifade içinde ") (" ile yapılabilir. "Düzenli ifade alt şablon" için hızlı google arama this sonuçlandı.

Hatta preg_replace gerekmez; Zaten maçları var, çünkü sadece bu yüzden gibi normal bir str_replace kullanabilirsiniz:

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

Ben senin sorunu anlamak emin değilim. Belki bir örnek sonrası olabilir:

  • dosya.ext, orijinal dosya
  • Eğer sonuç ile değiştirmek istiyorum ne kullanmak istiyorsanız ve regex
  • new_file.ext, istediğiniz çıktı

Eğer sadece okumak file.ext, bir regex maç yerine, ve new_file.ext, sonucu saklamak istiyorsanız, tüm ihtiyaç vardır:

$content = file_get_contents('file.ext');
$content = preg_replace('/match/', 'replacement', $content);
file_put_contents('new_file.ext', $content);