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 :

supprimer occurence tableau


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 106
    Points : 48
    Points
    48
    Par défaut supprimer occurence tableau
    Bonjour,

    Je veux supprimer certaine valeurs dans des chaines de caractères selon des conditions très précises.
    Chaque caractère génère une autre valeur entre | |
    Je précise que je ne peux pas changer ces chaines de caractère, faut que je fasse avec leurs formats :'(

    p,B1 |5| |4| A5 , A7, A10 |6| |9| |11|

    p,B5,B7 |1| |2,3,4| |5| A5 , A11 |4| |5|

    p, B7, B8, B9 , B10 , B11 || || || || || || A9 , A25 |8| |17|

    Je veux supprimer le début de chaque ligne selon l'algo suivant:
    -compter le nombre d occurence séparé par une virgule AVANT le premier | et supprimer autant de couple de || quoiquil y est a l'intérieur
    -sauvergarder le reste de la ligne

    Dans mes exemples , ce qui est en rouge est ce que je veux supprimer. Et le reste est ce que je veux sauvegarder.

    Comment dois je coder ce tronquage ? L'algo me parait un peu complexe, je viens de perdre mon aprem à essayer :p

    Je vous remercie de toute aide apportée..

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    elles sortent d’où les chaines ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 106
    Points : 48
    Points
    48
    Par défaut
    Elles sont la résultante d'une succession de requêtes, et d'un mécanisme de drag and drop. Elle m'indique si un élément est déplacé et où il se trouve ( tout en m'indiquant la hiérarchie père fils des éléments entre eux. J'essaye donc de parser cette chaine en l'état.

    Merci de votre temps

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    Voici une fonction qui devrait améliorer ton début d'année :
    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
    29
    30
    <?php
     
    $str = "p, B7, B8, B9 , B10 , B11 || || || || || ||  A9 , A25 |8| |17|";
    //$str = "p,B5,B7 |1| |2,3,4| |5| A5 , A11 |4| |5|";
     
    $len = strlen($str);
    $nbComma  = 0;
    $nbPipe   = 0;
    $nbValues = 0;
     
    for($i = 0; $i < $len; ++$i) {
       $char = $str[$i];
       if ($char === '|') {
          if ($nbPipe === 0) {
             $nbValues = ($nbComma + 1) * 2;
          }
          if (++$nbPipe === $nbValues) {
             $toKeep = trim(substr($str, $i + 1));
             break;
          }
       }
       else
       if ($char === ',') {
          ++$nbComma;
       }
    }
     
    echo $toKeep;
     
    ?>

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par xavioche77 Voir le message
    Elles sont la résultante d'une succession de requêtes, et d'un mécanisme de drag and drop. Elle m'indique si un élément est déplacé et où il se trouve ( tout en m'indiquant la hiérarchie père fils des éléments entre eux. J'essaye donc de parser cette chaine en l'état.

    Merci de votre temps
    pourquoi ne pas avoir fait un arbre en json ? c'est de la bidouille ton format

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 106
    Points : 48
    Points
    48
    Par défaut
    Le JSON 'est pas une mauvaise idée, je le noterai pour la suite pr optimiser tout cela .
    Je ne comprend pas tout dans l'algorithme de rawsrc.
    C'est pratiquement ce qu'il me faut mais je cherche à remplacer la chaine d'entrée;
    p,B1 |5| |4| A5 , A7, A10 |6| |9| |11|

    par

    p,B1 |5|4| A5 , A7, A10 |6|9|11|

    c'est à dire que je cherche donc tjs à supprimer la partie p,B1 |5|4| mais en considérant que les éléments ne sont plus entouré de |élément1| |élément2| mais plutôt de la forme |élément1|élément2|.
    De ce que je comprend la fonction devrait déjà faire ce travail ou je suis vraiment à l'ouest ? :p

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par xavioche77 Voir le message
    p,B1 |5| |4| A5 , A7, A10 |6| |9| |11|

    p,B5,B7 |1| |2,3,4| |5| A5 , A11 |4| |5|

    p, B7, B8, B9 , B10 , B11 || || || || || || A9 , A25 |8| |17|

    Je veux supprimer le début de chaque ligne selon l'algo suivant:
    -compter le nombre d occurence séparé par une virgule AVANT le premier | et supprimer autant de couple de || quoiquil y est a l'intérieur
    -sauvergarder le reste de la ligne

    Dans mes exemples , ce qui est en rouge est ce que je veux supprimer. Et le reste est ce que je veux sauvegarder.
    C'est ce que fait exactement mon code.

    Citation Envoyé par xavioche77 Voir le message
    C'est pratiquement ce qu'il me faut mais je cherche à remplacer la chaine d'entrée;
    p,B1 |5| |4| A5 , A7, A10 |6| |9| |11|

    par

    p,B1 |5|4| A5 , A7, A10 |6|9|11|

    c'est à dire que je cherche donc tjs à supprimer la partie p,B1 |5|4| mais en considérant que les éléments ne sont plus entouré de |élément1| |élément2| mais plutôt de la forme |élément1|élément2|.
    Ce n'est pas pareil que le besoin dans le premier post.
    Faut modifier légèrement le code de la fonction.

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    oui oui j'essaye, je cherche

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Pour gérer ce genre de chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str = "p,B1, B2 |5|4|5,4,2| A5 , A7, A10 |6|9|11|";
    il suffit juste de remplacer la ligne 15 de mon code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nbValues = $nbComma + 2;

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 106
    Points : 48
    Points
    48
    Par défaut
    voui, merci beaucoup.
    Je vais vérifier la cohérence du tout.
    Et dès que j'ai un moment, j'irai voir du coté du json pour voir comment je peux intégrer le tout.
    Si cela pourra aider des gens mais j'en doute parce que c'est de la bidouille, la chaine de caractère complexe était issu d'une fonction JS qui renvoyait la position des éléments déplacés en gardant une hiérarchie de père filssi il y en avait une.

    http://devheart.org/articles/jquery-...drag-and-drop/

    Je vous remercie tous

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

Discussions similaires

  1. Supprimer un tableau
    Par dabertch dans le forum JBuilder
    Réponses: 1
    Dernier message: 23/05/2008, 15h17
  2. supprimer un tableau powerpoint / condition "Existe"
    Par ouioui_cmoi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/04/2008, 18h22
  3. supprimer ligne tableau si A est vide
    Par flyhb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/03/2008, 00h30
  4. Supprimer un tableau Powerpoint (PPT) depuis Excel VBA
    Par pontoise dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2008, 20h01
  5. [Tableaux] débutant : supprimer ligne tableau
    Par samplaid dans le forum Langage
    Réponses: 2
    Dernier message: 27/03/2006, 11h39

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