Domanda

Sto cercando di trovare alcuni determinati blocchi nel mio file di dati e sostituire qualcosa dentro di loro. Dopo di che mettere il tutto (con i dati sostituiti) in un nuovo file. Il mio codice al momento si presenta così:

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

Ora il problema è che non so come return_whole_thing. Fondamentalmente, file.ext e new_file.ext sono quasi uguali tranne dei dati sostituiti. Qualsiasi suggerimento quello che dovrebbe essere il luogo di return_whole_thing?

Grazie!

È stato utile?

Soluzione

E 'probabilmente meglio per rafforzare la vostra espressione regolare per trovare una sotto-regola all'interno del modello originale. In questo modo si può chiamare preg_replace () e da fare con esso.

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

Questo può essere fatto con "()" all'interno dell'espressione regolare. Una rapida ricerca su Google per "regolari sottopattern espressione" ha provocato questo

Altri suggerimenti

Non è nemmeno necessario il preg_replace; perché hai già le partite si può semplicemente utilizzare uno str_replace normale in questo modo:

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

Non sono sicuro di aver capito il problema. Potrebbe forse inviare un esempio di:

  • file.ext, il file originale
  • l'espressione regolare che si desidera utilizzare e ciò che si desidera sostituire le partite con
  • new_file.ext, l'output desiderato

Se si desidera solo per leggere file.ext, sostituire un match regex, e memorizzare il risultato in new_file.ext, tutto il vostro bisogno è:

$content = file_get_contents('file.ext');
$content = preg_replace('/match/', 'replacement', $content);
file_put_contents('new_file.ext', $content);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top