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 :

preg_match_all extraire un texte dans un long texte


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Mika2008
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 71
    Points
    71
    Par défaut preg_match_all extraire un texte dans un long texte
    Bonjour,

    j'aimerais utiliser cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     function findinside($start, $end, $string) {
            preg_match_all('/' . preg_quote($start, '/') . '([^\.)]+)'. preg_quote($end, '/').'/i', $string, $m);
     
            return $m[1];
        }


    mais ce la ne fonctionne pas et je ne vois pas pourquoi, car avec le code d'exemple ça fonctionne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       $start = "mary has";
        $end = "lambs.";
        $string = "mary has 6 lambs. phil has 13 lambs. mary stole phil's lambs. now mary has all the lambs.";
     
        $out = findinside($start, $end, $string);
     
        print_r ($out);
     
    /* Results in 
    (
        [0] =>  6 
        [1] =>  all the 
    )
    */
    mais avec le code suivant ça ne fonctionne plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     $start = "Civilite";
     $end = "Nom";
     $string = "iches Voici les ments de la : Contact Civilite : M. Nom : toto  Prenom : titi Adresse : 4 bas de la haut";
     
     $out = findinside($start, $end, $string);
     
        print_r ($out);
    mon résultat est vide :

    alors qu'il devrais m'afficher le résultat suivant :


    qu'en pensez vous svp ?

    merci beaucoup

  2. #2
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    ([^\.)]+) accepte tout sauf les points. La chaîne que tu cherches à capturer comprend un point, d'où le fait qu'elle ne te retourne rien !
    En allant au plus simple, ceci fonctionnera :
    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
     
    <?php
     
        function findinside($start, $end, $string) {
            preg_match_all('/' . preg_quote($start, '/') . '(.+)'. preg_quote($end, '/').'/i', $string, $m);
     
            return $m[1];
        }
     
    $start = "Civilite :";
     $end = " Nom";
     $string = "iches Voici les ments de la : Contact Civilite : M. Nom : toto  Prenom : titi Adresse : 4 bas de la haut";
     
     $out = findinside($start, $end, $string);
     
        print_r ($out);
     
     
    /* Results in 
    (
        [0] =>  6 
        [1] =>  all the 
    )
    */
    ?>
    A toi d'affiner ensuite selon ton besoin !

Discussions similaires

  1. Ouverture fenetre + affichage d'un texte dans un champ texte
    Par fabien14 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/03/2007, 10h09
  2. Plusieurs lignes de texte dans une variable texte
    Par Loko dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 15/12/2005, 12h51
  3. Réponses: 6
    Dernier message: 03/10/2005, 16h08
  4. Très long texte dans Quick Report - Comment faire ?
    Par delphi+ dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/08/2005, 22h18
  5. modifier la couleur d'un texte dans un input text
    Par mic79 dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 05/01/2005, 16h45

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