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 :

Récupérer chaine entre séparateurs. [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 27
    Par défaut Récupérer chaine entre séparateurs.
    J'ai un long fichier de texte avec des phrases contenant tous les caractères communs et ponctuation se présentant comme suit:

    ;:Phrase 1 bla bla, ? etc.:,: Morceau 1;:Phrase 2 blu blu, ! 'etc':,:

    Je souhaite extraire chaque chaine entre ;: et :,: et entre :,: et ;:

    Pour récupérer par exemple:

    Phrase 1 bla bla, ? etc.
    Morceau 1
    Phrase 2 blu blu, ! 'etc'
    Morceau 2

    Je débute en regex et je ne sais pas trop comment faire...

    Je pensais pour commencer à :

    $motif = "/(;:)(.*)(:,:)/";
    preg_match_all($motif, $url,$out, PREG_PATTERN_ORDER);

    Mais déjà là ça coince : c'est incomplet et ne fonctionne pas...
    Si quelqu'un peut m'aider!


    Merci d'avance...

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    En 2 temps, c'est plus simple et plus claire :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    #variables
    $motif1='/;:(.+?):,:/';
    $motif2='/:,:(.+?);:/'; 
    $chaine=";:Phrase 1 bla bla, ? etc.:,: Morceau 1;:Phrase 2 blu blu, ! 'etc':,:"; 
    #preg
    preg_match_all($motif1,$chaine,$valeur1);
    preg_match_all($motif2,$chaine,$valeur2);
    #affichage
    print_r($valeur1); 
    print_r($valeur2); 
    ?>
    Z.

  3. #3
    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 : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

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

    Je ferais aussi en deux temps, mais pas pareil

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $myString=";:Phrase 1 bla bla, ? etc.:,: Morceau 1;:Phrase 2 blu blu, ! 'etc':,:Morceau 2;:"; 
    $myPattern='/ ;: ( (?: (?!;:). ) + ) /x';
    preg_match_all($myPattern, $myString, $allMatches1);
     
    $myPattern = '/:,:/S';
    foreach($allMatches1[1] as $myRow) {
        $result = preg_split($myPattern, $myRow);
        print "<li>". $result[0];
        print "<li>". $result[1];
    }

    Au choix

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

Discussions similaires

  1. [RegExp] Récupérer une chaine entre deux délimiteurs
    Par Soncar dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/02/2011, 21h07
  2. Réponses: 6
    Dernier message: 17/02/2010, 19h48
  3. [RegEx] Récupérer le contenu d'une chaine entre deux séparateurs
    Par soulryo dans le forum Langage
    Réponses: 2
    Dernier message: 13/08/2008, 14h17
  4. Récupérer chaine caractère entrée dans une box
    Par clem56 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 10/06/2008, 12h47

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