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 :

[Tableaux] Diviser une chaîne de caractères [balises] en tableau


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut [Tableaux] Diviser une chaîne de caractères [balises] en tableau
    Salut,

    Est-ce qu’il existe une fonction en php qui permet de deviser une chaîne de caractères qui contient des balise sous forme de tableau.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine='<balise1....> <balise1.1.....></balise1.1><balise1.2...></balise1.2></balise1><balise2....></balise2><balise3....></balise3>'
    devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tab[0] contient '<balise1.....> <balise1.1.....></balise1.1><balise1.2.......></balise1.2></balise1>'
    $tab[1] contient '<balise2......></balise2>'
    $tab[2] contient '<balise3......></balise3>'
    j'espére trouver une réponse ici, merci d'avance et bonne journée

  2. #2
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    A ma connaissance il n'y en a pas...

    Cette chaine contient des balises identiques ou différentes?

    Il faudra certainement utiliser les expressions régulières...

    Ou faire toujours un explode('><', $chaine) et reconstuire le tableau en rajouter le > de fin et < de début);

  3. #3
    Nee
    Nee est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    Tu pourrais utiliser l'API simpleXML (intégrée par default a PHP5).
    http://fr.php.net/manual/fr/simplexml.examples.php

    Grace a elle, tu peux parcourir ton document Xml comme des tableaux imbiqués.
    we are the knights who said nee !

  4. #4
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    salut et merci pour vos réponses mais c'est pas un document xml c'est juste une chaine de caractères et je crois que c'est possible avec les regex (réponse sur un autre forum) mais je suis vraiment trop nulle avec les expressions regulieres donc si quelqu'un peut m'aider ca serai sympa.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 39
    Points : 47
    Points
    47
    Par défaut
    SimpleXML accepte justement les chaînes de caractère contenant du XML. C'est ici bien plus adapté et indiqué qu'une expression régulière.

    Regarde les exemples de la doc dont Nee t'as fourni le lien.

  6. #6
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Les chaînes avec lesquelles je travaille ne sont pas sous le format XML
    Comme l’exemple proposé par Nee du genre :

    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
    26
    27
    28
    $xmlstr = <<<XML
    <?xml version='1.0' standalone='yes'?>
    <movies>
     <movie>
      <title>PHP: Behind the Parser</title>
      <characters>
       <character>
        <name>Ms. Coder</name>
        <actor>Onlivia Actora</actor>
       </character>
       <character>
        <name>Mr. Coder</name>
        <actor>El ActÓr</actor>
       </character>
      </characters>
      <plot>
       So, this language. It's like, a programming language. Or is it a
       scripting language? All is revealed in this thrilling horror spoof
       of a documentary.
      </plot>
      <great-lines>
       <line>PHP solves all my web problems</line>
      </great-lines>
      <rating type="thumbs">7</rating>
      <rating type="stars">5</rating>
     </movie>
    </movies>
    XML;
    et même si c’est le cas je n’ai pas trouvé une fonction qui pourra me servir.

    Mes balises sont du style html et non XML

    voici un autre exemple j'espère qu'il sera plus clair

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var='<span class="Style1"><b>Salut</b></span><br /><u>ceci est un test</u>';
    Et je cherche à avoir comme resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tab[0] contient '<span class="Style1"><b>Salut</b></span>'
    $tab[1] contient '<br />'
    $tab[2] contient '<u>ceci est un test</u>'

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 39
    Points : 47
    Points
    47
    Par défaut
    Le XHTML (ce que tu nous montres) est du XML. Ceci dit, j'ai testé et SimpleXML n'aime pas trop les XML mal formés ou n'ayant pas un ancêtre unique.

    Je te recommande donc la bibliothèque suivante :
    http://simplehtmldom.sourceforge.net/

    Petit exemple de ce que ça pourrait donner dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    require 'simple_html_dom.php';
    $dom = new simple_html_dom();
    $dom->load($var);
    $elements = array();
    foreach ($dom->find('*') as $dom_element) {
      $elements[] = $dom_element->outertext;
    }
    (non vérifié)

  8. #8
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Salut,
    J’ai essayé avec la bibliothèque simple_xml_dom mais ça ne marche pas.
    Donc quelqu’un peut m’aider à trouver une solution avec les expressions régulières.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 39
    Points : 47
    Points
    47
    Par défaut
    Ben si, ça marche.

    Fais voir ce que tu as fait.

  10. #10
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    voici l'exemple :

    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
          <?php 
    require 'simple_html_dom.php';
     
    $var='<span class="Style1"><b>Salut</b></span><br /><u>ceci est un test</u>';
     
     
    $dom = new simple_html_dom();
    $dom->load($var);
    $elements = array();
    foreach ($dom->find('*') as $dom_element) {
      $elements[] = $dom_element->outertext;
    }
     
     echo $elements[1];
     
    ?>
    il m'affiche l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\program files\easyphp1-8\www\test\simple_html_dom.php on line 50
    j'ai utlisé la version 0.98 de simplehtmldom

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 39
    Points : 47
    Points
    47
    Par défaut
    Étrange. Quelle est ta version de PHP ?

    (Fais un echo phpversion() si t'as un doute.)

  12. #12
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    salut, j'ai la version 4.3.10

  13. #13
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258

  14. #14
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Re,
    est-ce que quelqu’un peut m’aider à trouver une solution avec les expressions régulières?

  15. #15
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $var = '<span class="Style1"><b>Salut</b></span><br /><u>ceci est un test</u>';
     
    preg_match_all( '#<([a-z]+) ?(.*>.*</\\1>|/>)#Ui', $var, $matches );
     
    print_r( $matches[0] );

  16. #16
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Merci Bisûnûrs
    vive les expressions régulières

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

Discussions similaires

  1. [Tableaux] Chercher une chaîne de caractères dans un array()
    Par Julien Rozier dans le forum Langage
    Réponses: 2
    Dernier message: 03/05/2008, 12h55
  2. Remplir une chaîne de caractère dans un tableau
    Par Windsor123 dans le forum C
    Réponses: 4
    Dernier message: 03/11/2007, 01h29
  3. Réponses: 2
    Dernier message: 07/05/2007, 12h18
  4. [Tableaux] Découper une chaîne de caractères
    Par mix_35 dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2007, 02h06
  5. Diviser une chaîne de caractères en plusieurs
    Par manshoon dans le forum Langage
    Réponses: 7
    Dernier message: 26/04/2006, 19h23

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