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 une partie d'un texte en précisant les bornes [Fait]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Points : 144
    Points
    144
    Par défaut récupérer une partie d'un texte en précisant les bornes
    Bonjour,

    J'aimerais savoir comment faire pour récuperer dans une variable ce qui se trouve entre deux chaines de caracteres que l'on définit ?

    PAr exemple, dans un textte j'ai :
    [Titre1]bla bla bla[/Titre1]
    ...
    [Titre1]lalalalala[/Titre1]
    ...
    [Titre1]essai[/Titre1]

    et j'aimerais récupéré bla bla bla, lalala et essai dans des variables (1 tableau je pense c'est mieux)

    est-ce possible ?

    Merci
    ++

  2. #2
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Fait une recheche dans les forums de ce site pour "bbcode". Tu trouveras sans problème

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Points : 144
    Points
    144
    Par défaut
    oui mais avec le bbcode, c'est juste pour remplacer ce qu'il y a autour d'un certain texte, là j'aimerais récupéré ce qu'il y a entre ces textes dans des variables, dans un tableau en fait.

    Avec mon ex d'au dessus :
    [Titre1]bla bla bla[/Titre1]
    ...
    [Titre1]lalalalala[/Titre1]
    ...
    [Titre1]essai[/Titre1]


    je récupere dans un tableau $arr : 0 => bla bla bla, 1 => lalalala, 2 => essai

    Vous voyez ce que je veux dire ?

  4. #4
    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

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Rien de plus simple avec la fonction preg_match_all :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $string = <<< STRING
    Avec mon ex d'au dessus :
    [Titre1]bla bla bla[/Titre1]
    ...
    [Titre1]lalalalala[/Titre1]
    ...
    [Titre1]essai[/Titre1]
    STRING;
    
    $nb = preg_match_all('£\[Titre1\](.+)\[/Titre1\]£U', $string, $matches);
    for ($i = 0; $i < $nb; $i++) {
        echo $matches[1][$i] . '<br/>';
    }
    ?>
    Si besoin n'hésitez pas à consulter le tutoriel d' Initiation aux expressions régulières en PHP.


    Julp.

  6. #6
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    L'aide sur les bbcode va pouvoir te donner une idée des patterns à utiliser car les regex vont intervenir

    Un exemple à l'arrache :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $s = '[Titre1]bla bla bla[/Titre1]
    ...
    [Titre1]lalalalala[/Titre1]
    ...
    [Titre1]essai[/Titre1]';
     
    $stag = preg_quote('[Titre1]');
    $etag = preg_quote('[/Titre1]');
     
    $r = '|'.$stag.'(.*?)'.$etag.'|s';
    preg_match_all($r, $s, $a);
     
    print_r($a[1]);

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Points : 144
    Points
    144
    Par défaut
    ok merci,

    en fait mon probleme, c'est que j'ai une présentation du type :
    [R]AAAA[/R]
    [ss]eee[/ss]
    [ss]fff[/ss]

    [R]BBBB[/R]
    [ss]ttt[/ss]
    [ss]yyy[/ss]

    et ca se répète sur le même modèle...

    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    preg_match_all('£\[R\](.+)\[/R\]£U', $string, $matches);
    foreach ($matches[1] as $key => $value)
    { 
    	/* j'affiche $value */
     
    }
    J'arrive à afficher correctement les différents [R][/R] :

    AAAA

    BBBB

    mais j'ai un probleme pour afficher ce qu'il y a dedans à chaque fois, j'arrive pas délimiter, j'arrive afficher tout le reste mais il se met dans chaque [R][/R] comme ca :
    AAAA
    eee
    fff
    ttt
    yyy

    BBBB
    eee
    fff
    ttt
    yyy

    Je ne sais pas si vous voyez ce que je veux dire ?

    Merci
    ++

  8. #8
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Je ne suis pas sûr d'avoir bien compris ton dernier post. Je me lance quand même:

    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
    $str = '[R]AAAA[/R]
    [ss]eee[/ss]
    [ss]fff[/ss]
     
    [R]BBBB[/R]
    [ss]ttt[/ss]
    [ss]yyy[/ss]';
    $i = 0;
     
    preg_match_all('!\[R\](.+?)\[/R\].+?(?=\[R\]|$)!s', $str, $a);
    foreach ($a[0] as $s) {
      preg_match_all('|\[ss\](.+?)\[/ss\]|', $s, $m);
      echo $a[1][$i];
      print_r($m[1]);
      ++$i;
    }
    Obligé de passer par 2 preg ayant essayé ça en vain:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '|\[R\](.+?)\[/R\](?:\s*\[ss\](.+?)\[/ss\])+|'
    Comme le nombre de [ss] pour chaque [R] est variable, on ne peut pas capturer finement chaque sous occurrence de [ss] (seul le dernier d'une série est capturé). Ou alors si quelqu'un sait comment contourner ça, je suis preneur.

Discussions similaires

  1. Récupérer une partie du texte d'un fichier php
    Par dercom dans le forum Langage
    Réponses: 6
    Dernier message: 29/12/2011, 23h23
  2. [AC-2010] Formulaire - Comment récupérer une partie d'un champ texte
    Par Invité dans le forum IHM
    Réponses: 3
    Dernier message: 10/06/2011, 16h22
  3. Récupérer une partie d'une ligne d'un fichier texte
    Par exqo77 dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 28/01/2010, 10h13
  4. Récupérer une partie d'un fichier texte
    Par Ladgalen dans le forum Fortran
    Réponses: 2
    Dernier message: 17/05/2008, 17h43
  5. récupérer une partie d'un texte dans une variable
    Par Bubale dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/05/2008, 11h18

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