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 :

scinder une chaine avec une regex


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 19
    Points : 13
    Points
    13
    Par défaut scinder une chaine avec une regex
    Bonjour,
    J'ai une chaine de caractères contenant des parametre pour une fonction que je dois traiter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "fittextflow={verticalalign=center orientate=south} margin=2"
    J'aurais besoin de séparer cette chaine aux espaces mais uniquement ceux qui ne sont pas entre des {}.
    Je voudrais donc avoir un tableau avec dans la premiere cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "fittextflow={verticalalign=center orientate=south}"
    et dans la deuxième J'ai commencer a chercher du côté des regex avec la fonction preg_split mais je n'arrive pas à trouver la bonne regex.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Difficile de faire ca avec un preg_split... il faudrait pouvoir exprimer :
    "espace mais qui n'est pas entouré d'accolades".
    Ca serait faisable avec des references avant et arriere, mais le probleme c'est que ces references doivent correspondre a une taille FIXE de caracteres... ce qui n'est pas le cas ici.

    Je te propose une autre solution, sans preg_split :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $texte = 'fittextflow={verticalalign=center orientate=south} margin=2 param=3 param2=4 param3={a a a} param4=5';
     
    $masque = '#([^=]+)=([^{} ]+|{[^}]+})#U';
    preg_match_all($masque, $texte, $result);
     
    echo '<pre>';
    print_r($result);
    echo '</pre>';
    ?>
    $result[0] contient exactement ce que tu souhaite, mais il est possible que $result[1] et $result[2] t'interessent plus ;o)

Discussions similaires

  1. Isoler une chaine d'une chaine, problème de regex?
    Par PaJe1005 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/06/2012, 09h36
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. Réponses: 3
    Dernier message: 18/03/2008, 14h28
  5. [Regex]Match d'une regexp avec une chaîne avec caractères spéciaux
    Par gdawirs dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 12h24

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