Supprimer une ligne dans un fichier avec php
Fermé
jb1993
Messages postés
85
Date d'inscription
dimanche 17 août 2008
Statut
Membre
Dernière intervention
7 septembre 2011
-
7 mai 2009 à 13:03
jb1993 Messages postés 85 Date d'inscription dimanche 17 août 2008 Statut Membre Dernière intervention 7 septembre 2011 - 7 mai 2009 à 21:41
jb1993 Messages postés 85 Date d'inscription dimanche 17 août 2008 Statut Membre Dernière intervention 7 septembre 2011 - 7 mai 2009 à 21:41
A voir également:
- Supprimer une ligne dans un fichier avec php
- Fichier rar - Guide
- Impossible de supprimer un fichier - Guide
- Supprimer une page word - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
4 réponses
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
7 mai 2009 à 15:18
7 mai 2009 à 15:18
Utilise une expression rationnelle, de façon à obtenir par exemple :
function zfiles_erase($nom, $fichier) { if( !is_file($fichier) ) trigger_error('Fichier ' . $fichier . 'inexistant', E_USER_WARNING); else { $listeValeur = file_get_contents($fichier); if( ($changement = preg_replace('#\r?\n' . $nom . ':.+#Us', '', $listeValeur)) != $listeValeur ) if( file_put_contents($fichier, $changement) ) return true; return false; } } var_dump(zfiles_erase('machin', 'erase.txt'));À améliorer, mais l'idée est là.
jb1993
Messages postés
85
Date d'inscription
dimanche 17 août 2008
Statut
Membre
Dernière intervention
7 septembre 2011
3
7 mai 2009 à 15:40
7 mai 2009 à 15:40
Il y a des choses que je ne comprend pas :
Fonction que je ne connais pas :
file_get_contents()
file_put_contents()
Et surtout le regex spécial, que fait-il exactement ?... vous pouvez m'expliquer le code de celui-ci ? ^^'
$listeValeur = file_get_contents($fichier); if( ($changement = preg_replace('#\r?\n' . $nom . ':.+#Us', '', $listeValeur)) != $listeValeur ) if( file_put_contents($fichier, $changement) ) return true; return false;
Fonction que je ne connais pas :
file_get_contents()
file_put_contents()
Et surtout le regex spécial, que fait-il exactement ?... vous pouvez m'expliquer le code de celui-ci ? ^^'
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
7 mai 2009 à 19:45
7 mai 2009 à 19:45
Bah pour les fonctions, un petit tour vers la doc php ;)
Le pattern de l'expression rationnelle signifie que l'on remplace la chaine contenue dans $nom située en début de nouvelle ligne ( \r?\n ), le \r? c'est pour windows, le ? signifiant qu'il est optionnel, suivie de : donc, lui meme suivi de n'importe quel caractères (.+).
Les options (Us) signifiant que l'on inverse la tendance à la gourmandise (U), le s quand à lui signifie que le . (.+) ne doit pas prendre en compte les caractères de nouvelles ligne.
[EDIT]
Après lecture de ton mp, j'ai en effet omit le début du fichier, il faut donc remplacer le masque du preg_replace() par #(?:^|\r?\n' ). $nom . ':.+#Us
Le pattern de l'expression rationnelle signifie que l'on remplace la chaine contenue dans $nom située en début de nouvelle ligne ( \r?\n ), le \r? c'est pour windows, le ? signifiant qu'il est optionnel, suivie de : donc, lui meme suivi de n'importe quel caractères (.+).
Les options (Us) signifiant que l'on inverse la tendance à la gourmandise (U), le s quand à lui signifie que le . (.+) ne doit pas prendre en compte les caractères de nouvelles ligne.
[EDIT]
Après lecture de ton mp, j'ai en effet omit le début du fichier, il faut donc remplacer le masque du preg_replace() par #(?:^|\r?\n' ). $nom . ':.+#Us
jb1993
Messages postés
85
Date d'inscription
dimanche 17 août 2008
Statut
Membre
Dernière intervention
7 septembre 2011
3
7 mai 2009 à 21:41
7 mai 2009 à 21:41
J'ai une erreur à la ligne :
if( ($changement = preg_replace('#(?:^|\r?\n' ). $nom . ':.+#Us', '', $listeValeur)) != $listeValeur )
Parse error: parse error in D:\wamp\www\teste\index.php on line 8
if( ($changement = preg_replace('#(?:^|\r?\n' ). $nom . ':.+#Us', '', $listeValeur)) != $listeValeur )
Parse error: parse error in D:\wamp\www\teste\index.php on line 8