IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

php, suppression ligne particulière tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut php, suppression ligne particulière tableau
    Soit un tableau de lignes contenant parfois 'acryl'.
    Je cherche à supprimer toutes les lignes contenant 'acryl' en une seule fois, puis à réécrire ce tableau sans ces lignes.
    Le code ci-dessous ne fait que supprimer une ou des lignes contenant 'acryl' de manière incompréhensible (pour moi).

    Pouvez-vous m'aider?
    Merci

    fichier exemple: 'mon_file.txt':

    ABROTANUM
    abruptibulbus
    ACRYLOID;
    ACRYLATES COPOLYMER;
    ishikariensis;
    ACRYLATES;

    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    $file = 'mon_file.txt';
     
    		$handle = fopen($file, "r+");	 
    		$contents = fread($handle, filesize($file));
    		$ligne = explode(";", $contents);
    		$lineNum=0;
     
    		while ($lineNum<(count($ligne)) )		
    		{	
    			$regex = '/acryl/i' ; 				
    			if (preg_match($regex, $ligne[$lineNum]) )
    			{
    			 $arr = file($file); 
    			 unset($arr["$lineNum"]);//
    				$fp = fopen($file, 'w+');
     
    				foreach($arr as $line) 
    				{ 
    					fwrite($fp,$line); 
    				 }				
    				fclose($fp);							   
    			}
    			$lineNum++;			
    		}
    		fclose($handle);
     
    ?>

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    ça peut se réduire en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    ?php
    $file = 'mon_file.txt';
     
    $handle = fopen($file, "r+");	 
    $contents = fread($handle, filesize($file));
    fclose($handle);	
    $ligne = explode(";", $contents);
    $lineNum=0;
     
    $newcontents = '';
    $regex = '/acryl/i' ;
    while ($lineNum<(count($ligne)) )		
    {	
     
      if (!preg_match($regex, $ligne[$lineNum]) )
      {
        $newcontent .= $ligne[$lineNum];
      }
    }
    $fp = fopen($file, 'w+');
    fwrite($fp, $newcontent); 
     
     
    ?>
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre attention si rapide.
    J'ai essayé...et n'obtiens qu'un navigateur planté! ma faute?
    ou la boucle est due à:
    $newcontent .= $ligne[$lineNum]; ????

    Je ne comprends pas comment il est possible de supprimer une ligne sans le recours à unset().

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Il faudrait regarder d'un peu plus près la doc des fonctions relative aux fichiers... fopen et cie sont quasiment toujours inutiles.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $path = 'mon_file.txt';
    $lines = array();
    foreach (file($path) as $line) {
      if (stripos($line, 'acryl') === false) {
        $lines[] = $line;
      }
    }
    file_put_contents($path, implode('', $lines));
    ?>

  5. #5
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    en fait, dans cet algo je ne retiens que les lignes ne contenant pas la chaîne 'acryl'.

    As tu un message d'erreur ?
    sinon, tu peux valablement remplacer la ligne par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //$newcontent .= $ligne[$lineNum];
    $newcontent = $newcontent.$ligne[$lineNum];
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Voilà, j'ai fait ce que recommande asdf007...et c'est parfait de rapidité et de simplicité.

    Merci(sss) aux bons samaritains, asdf007 et Thes32

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression d'une ligne particulière dans un fichier texte
    Par Aymeric41 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 29/08/2011, 13h53
  2. suppression ligne d'un tableau
    Par joums dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/08/2010, 11h18
  3. [DisplayTag] Checkbox et suppression des lignes du tableau
    Par bard123 dans le forum Taglibs
    Réponses: 1
    Dernier message: 07/10/2009, 15h52
  4. [DOM] PB Suppression ligne tableau sur IE
    Par speedev dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/11/2006, 14h41
  5. Suppression d'une ligne particulière d'un mémo
    Par BXDSPORT dans le forum Delphi
    Réponses: 3
    Dernier message: 14/08/2006, 11h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo