Question

Je suis en train de trouver des certains blocs dans mon fichier de données et remplacer quelque chose à l'intérieur d'eux. Après cela, mettre le tout (avec les données remplacées) dans un nouveau fichier. Mon code au moment ressemble à ceci:

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

Maintenant, le problème est que je ne sais pas comment return_whole_thing. Fondamentalement, fichier.ext et new_file.ext sont presque les mêmes, sauf des données remplacées. Toute suggestion qui devrait être sur le lieu de return_whole_thing?

Merci!

Était-ce utile?

La solution

Il est probablement préférable de renforcer votre expression régulière pour trouver un subpattern dans le modèle original. De cette façon, vous pouvez simplement appeler preg_replace () et être fait avec elle.

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

Cela peut être fait avec « () » dans l'expression régulière. Une recherche rapide sur Google pour "sous-modèles d'expression régulière" a donné lieu à cette

Autres conseils

Vous ne même pas besoin de la preg_replace; parce que vous avez déjà les matches que vous pouvez simplement utiliser une str_replace normale comme ceci:

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

Je ne suis pas sûr que je comprends votre problème. Pourriez-vous poster peut-être un exemple de:

  • fichier.ext, le fichier original
  • l'expression rationnelle que vous souhaitez utiliser et ce que vous voulez remplacer les matchs avec
  • new_file.ext, votre sortie désirée

Si vous voulez juste lire file.ext, remplacer un match de regex, et stocker le résultat dans new_file.ext, tous vos besoins est:

$content = file_get_contents('file.ext');
$content = preg_replace('/match/', 'replacement', $content);
file_put_contents('new_file.ext', $content);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top