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 :

[RegExp]Split chaîne par espaces sauf ceux entre guillemets ?


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [RegExp]Split chaîne par espaces sauf ceux entre guillemets ?
    Tout est dans le titre !

    Pour le développement d'un moteur de recherche fulltext, j'ai besoin de
    splitter une chaine par des espaces (et autres délimiteurs : virgule, point-vigule, etc) pour récupérer des mots et expressions.

    MAIS je ne dois pas splitter si ces délimiteurs sont entre guillemets.

    Ex : l'utilisateur tape -> "mon expression" un_mot autre_mot "autre expression"
    Et comme résultat j'ai un tableau avec :
    [0]=>"mon expression"
    [1]=>un_mot
    [2]=>autre_mot
    [3]=>"autre expression"

    (note : la conservation des guillemets est un plus).

    Je pensais utiliser les regexp.
    D'habitude je me débrouille pas trop mal avec les reg exp, mais là, je sèche !
    Pourtant ça m'a pas l'air infaisable...

    A vot' bon coeur et merci d'avance !

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?
    $s = '"mon expression" un_mot autre_mot "autre expression"';
    $tokens = token_get_all('<?php '. $s .' ?>');
    foreach($tokens as $tok) {
       if (is_array($tok) && !in_array(token_name($tok[0]), array('T_OPEN_TAG', 'T_WHITESPACE', 'T_CLOSE_TAG'))) {
          $result[] = $tok[1];
       }
    }
    var_dump($result);
    ?>

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Un grand merci :

    1. Pour la solution apportée.
    2. Pour la découverte des Tokenizer PHP.

    PB résolu haut la main

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

Discussions similaires

  1. [Split] Chaîne de caractères avec espace variable
    Par smarlytomtom dans le forum Général Java
    Réponses: 2
    Dernier message: 24/06/2015, 14h06
  2. [regexp] Remplacer une chaîne par une chaîne aléatoire
    Par endreillie dans le forum Langage
    Réponses: 9
    Dernier message: 28/10/2010, 12h15
  3. explode par espace sauf chaine entre guillemet
    Par calitom dans le forum Langage
    Réponses: 3
    Dernier message: 12/02/2010, 15h48
  4. Réponses: 1
    Dernier message: 06/12/2006, 16h24
  5. probleme d'espace non voulu entre 2 bloc
    Par piff62 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/04/2005, 16h07

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