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 :

Probleme regex pour changer .. [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 50
    Points : 37
    Points
    37
    Par défaut Probleme regex pour changer ..
    Salut a tous.
    mont but recuperer les infos dans un fichier structuré comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    1,sophie:dupond
    2,sebatien:bertin:25:50180
    3,marie:gerard:22:13000:marseilles
    Le pb que je rencontre et qu'il n'y a pas toujours le meme nombre d'infos sur chaque ligne alors j'ai essayé ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    preg_match_all('#(.+?),((.+?):(.+?)(?:(.+?):+(.+?):+(.+))?#', $v, $array);
    preg_match_all('#(.+?),(.+?):(.+?)?:(.+?):+?(.+?):+?(.+)#', $v, $array);
    preg_match_all('#(.+?),(.+?):((.+?)|)?:(.+?):+?(.+?):+?(.+)#', $v, $array);
    preg_match_all('#(.+?),(.+?):((.+?)(.+))?:(.+?):+?(.+?):+?(.+)#', $v, $array);
    la premiere aurais pu etre bien mais jcrois que le 3eme (.+?) fait qu'il trouve rien car il ya pas de : a la fin de la premier ligne. Alors p-e que si jpouvais lui dire si tu trouve tu fait .+? sinon tu met .+
    Bref qqun aurais une idée ?
    merci

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    Je sais pas si je suis bien dans le sujet, mais je tente...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    $strs = array('1,sophie:dupond',
                '2,sebatien:bertin:25:50180',
                '3,marie:gerard:22:13000:marseilles');
     
    $reg = '#(?<!>|href=")http://.[a-zA-Z0-9%_?!\-\/.]+(?!</a>)#';
     
    foreach($strs as $str)
        print_r( preg_split('/[,:]/', $str) );

  3. #3
    mon_nom_est_personne
    Invité(e)
    Par défaut
    et pourquoi pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #([0-9]+),([a-zA-Z]+):([a-zA-Z])+(:(.*?:))*#

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 50
    Points : 37
    Points
    37
    Par défaut merciiiiiiiiiiiiii
    pour le preg_split => mortel j'connaissait pas c'est excellent.
    Pour la 2eme expressions chez moi ca ne fonctionne pas voila le resultat que ca me donne :
    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
     
    Array
    (
        [0] => 1,sophie:dupond
        [1] => 1
        [2] => sophie
        [3] => d
    )
     
    Array
    (
        [0] => 2,sebatien:bertin:25:
        [1] => 2
        [2] => sebatien
        [3] => n
        [4] => :25:
        [5] => 25:
    )
     
    Array
    (
        [0] => 3,marie:gerard:22:
        [1] => 3
        [2] => marie
        [3] => d
        [4] => :22:
        [5] => 22:
    Donc je reste sur la soluce du preg_split c'est parfait mais j'aimerais bien avoir la réponse avec un preg_match

    Merci pour les réponses.

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Je vois pas trop l'avantage, mais avec preg_match_all, on pourrait faire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $str = array('1,sophie:dupond',
    '2,sebatien:bertin:25:50180',
    '3,marie:gerard:22:13000:marseilles');
     
    $reg = '/[^,:]+/';
     
    //print("\n");
    foreach($str as $row) {
        preg_match_all($reg, $row, $m);
        print_r($m);
    }

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    cool merci ca marche parfait ac le preg_match, mais jcomprend pas a fond le fait d'exclure le : & le , fait qu'il met ce qui se trouve entre 2 séparateur dans une case du tableau et pk il aurais pas mis toute la chaine sauf le : & , dans 1 seul case du tableau.

    Sinon pour l'avantage j'en sais rien le but de la manip c'est de pratiquer donc surement aucuns avantages.

    En tt cas merci les 2 soluces marchent nikel now faut savoir le refaire seul !

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

Discussions similaires

  1. Probleme pour changer le curseur d'un bouton
    Par jderam dans le forum MFC
    Réponses: 1
    Dernier message: 10/06/2009, 13h07
  2. Probleme avec regex pour une soustraction de charactére
    Par Sioul88 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 05/06/2008, 14h45
  3. Une regex pour changer des "-" en "/"
    Par lekunfry dans le forum Flex
    Réponses: 2
    Dernier message: 15/11/2007, 11h38
  4. [Hardware] Probleme pour changer de carte mere
    Par tiboooo dans le forum Composants
    Réponses: 17
    Dernier message: 23/02/2006, 23h02
  5. [Swing]probleme pour changer de JPanel
    Par mereyj dans le forum Composants
    Réponses: 8
    Dernier message: 19/06/2005, 12h55

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