Après avoir vu comment créer un fichier et écrire dedans en php, en continuant l’exemple d’un installateur de site, on peux aussi avoir besoin de modifier le texte d’un fichier, par exemple pour configurer des url dans un fichier « .htaccess ». Le code ci-dessous permet de le faire facilement :
class Misc {
/**
* Va remplacer toutes les chaines $find par $replace dans le fichier $file
*/
public static function replaceInfile($file, $find, $replace) {
if ($find != $replace) {
//recupere la totalité du fichier
$str = file_get_contents($file);
if ($str === false) {
return false;
} else {
//effectue le remplacement dans le texte
$str = str_replace($find, $replace, $str);
//remplace dans le fichier
if (file_put_contents($file, $str) === false) {
return false;
}
}
}
return true;
}
}
/**
* Va remplacer toutes les chaines $find par $replace dans le fichier $file
*/
public static function replaceInfile($file, $find, $replace) {
if ($find != $replace) {
//recupere la totalité du fichier
$str = file_get_contents($file);
if ($str === false) {
return false;
} else {
//effectue le remplacement dans le texte
$str = str_replace($find, $replace, $str);
//remplace dans le fichier
if (file_put_contents($file, $str) === false) {
return false;
}
}
}
return true;
}
}
L’utilisation se faisant de cette manière :
if (!Misc::replaceInfile('../.htaccess', 'ancienne chaine', 'nouvelle chaine')) {
//gestion erreur
}
//gestion erreur
}
Comme dans plusieurs articles précédents, pour ce code, j’ai imaginé cela sous la forme d’une fonction statique placé dans une classe Misc qui contiendrait diverses fonctions utilitaires