Une méthode qui peut être utilisée pour des fichiers plus petits qui tiennent dans votre mémoire deux fois :
$data = file('myfile'); // reads an array of lines
function replace_a_line($data) {
if (stristr($data, 'certain word')) {
return "replacement line!\n";
}
return $data;
}
$data = array_map('replace_a_line', $data);
file_put_contents('myfile', $data);
Remarque rapide, PHP > 5.3.0 prend en charge les fonctions lambda, vous pouvez donc supprimer la déclaration de fonction nommée et raccourcir le mappage à :
Vous devez écraser l'intégralité du fichier.
Donc, pour un fichier relativement petit, lisez le fichier dans un tableau , recherchez le mot, remplacez les lignes trouvées et écrivez tout le reste dans le fichier.
Pour les gros fichiers, l'algorithme est légèrement différent, mais globalement c'est exactement le même.
La partie importante est le Verrouillage de fichiers
C'est pourquoi nous préférons les bases de données.
Une méthode qui peut être utilisée pour des fichiers plus petits qui tiennent dans votre mémoire deux fois :
Remarque rapide, PHP > 5.3.0 prend en charge les fonctions lambda, vous pouvez donc supprimer la déclaration de fonction nommée et raccourcir le mappage à :
Théoriquement, vous pourriez en faire une seule déclaration php (plus difficile à suivre) :
Pour les fichiers plus volumineuxune autre méthode (moins gourmande en mémoire) doit être utilisée :