par
neeteex » 17 mai 2009, 10:22
Le problème, c'est que je n'ai pas encore trouvé le moyen d'
effacer simplement.
Encore un essai brutal et infructueux :
$restore = fopen('restore.php', 'r+');
$tab=file('restore.php'); // récupère le contenu
file_put_contents('restore.php', $text); // efface le fichier pour mettre la config seulement
fseek ($restore, 0, SEEK_END) ; // place le pointeur à la fin
for ($i = 50 ; $i<1050 ; $i ++ ) // écrit 1000 lignes à partir de la ligne 50
fputs ($restore, $tab[$i]) ;
fclose($restore);
Je vais faire un nouveau test avec preg_replace, que je mettrai ici.
EDIT :
EXCELLENT,
Après bien des essais j'ai construit ma regex en utilisant un commentaire :
$text = "<?php\n".'$config = '. var_export($new_config, true) . ";//config file should not be changed manually ?>" ;
$subject = file_get_contents ('restore.php') ;
$replacement = $text;
$pattern = "#^<\?php.*;//config file should not be changed manually \?>#s";
$restore = preg_replace ($pattern, $replacement, $subject, $limit=1); // remplacement
file_put_contents('restore.php', $restore); // écrit le tout dans restore.ph
Résolu, merci Calimero

Le problème, c'est que je n'ai pas encore trouvé le moyen d'[u]effacer[/u] simplement.
Encore un essai brutal et infructueux :
[php] $restore = fopen('restore.php', 'r+');
$tab=file('restore.php'); // récupère le contenu
file_put_contents('restore.php', $text); // efface le fichier pour mettre la config seulement
fseek ($restore, 0, SEEK_END) ; // place le pointeur à la fin
for ($i = 50 ; $i<1050 ; $i ++ ) // écrit 1000 lignes à partir de la ligne 50
fputs ($restore, $tab[$i]) ;
fclose($restore);[/php]
Je vais faire un nouveau test avec preg_replace, que je mettrai ici.
EDIT :
EXCELLENT,
Après bien des essais j'ai construit ma regex en utilisant un commentaire :
[php]
$text = "<?php\n".'$config = '. var_export($new_config, true) . ";//config file should not be changed manually ?>" ;
$subject = file_get_contents ('restore.php') ;
$replacement = $text;
$pattern = "#^<\?php.*;//config file should not be changed manually \?>#s";
$restore = preg_replace ($pattern, $replacement, $subject, $limit=1); // remplacement
file_put_contents('restore.php', $restore); // écrit le tout dans restore.ph[/php]
Résolu, merci Calimero :D