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 :

Parse un text


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Par défaut Parse un text
    Le bien bonjour à tout, mon problème est le suivant, j'ai un text de ce 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
     
     
    ---------------------------------------------
     
    {{{Actualités}}}
     
    blablalblalallbllala
     
     
    <doc2604|center>
     
     
     
    [pratique<-]
    ---------------------------------------------
     
    {{{Pratique}}}
    blablablablablablabla
    Ce que je cherche et d'afficher ce qui est à l’intérieur de {{{ }}} comme un titre et les autres comme un texte.

    Je vous remercie d'avance

  2. #2
    Membre éclairé Avatar de MTroy_
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut
    Bonjour,

    C'est pour construire un wiki like ?
    Comme toujours, je préconise les regex :


    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
    $document = <<<WIKITXT
    {{{un titre}}}
    du texte...
     
    {{{un autre titre}}}
    un autre texte...
    WIKITXT;
     
    echo preg_replace("/[\{]{3}(.*)[\}]{3}/", "<h1>$1</h1>", $document);
     
    // en sortie :
    <h1>un titre</h1>
    du texte...
     
    <h1>un autre titre</h1>
    un autre texte...

  3. #3
    Membre éclairé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Par défaut
    Citation Envoyé par MTroy_ Voir le message
    Bonjour,

    C'est pour construire un wiki like ?
    Comme toujours, je préconise les regex :


    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
    $document = <<<WIKITXT
    {{{un titre}}}
    du texte...
     
    {{{un autre titre}}}
    un autre texte...
    WIKITXT;
     
    echo preg_replace("/[\{]{3}(.*)[\}]{3}/", "<h1>$1</h1>", $document);
     
    // en sortie :
    <h1>un titre</h1>
    du texte...
     
    <h1>un autre titre</h1>
    un autre texte...
    Je te remercie pour ta réponse, mais on allons plus loin j'ai vue que je devrais parsé du HTML, du coup je me suis lancer , la structure de mon DOM

    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
     
     
    <hr class="spip">
    <h2 class="spip">Actualités</h2>
     
    <p class="spip">bla bla bla bla bla bla</p>
     
    <p class="spip"><a name="pratique"></a></p>
     
    <hr class="spip">
    <h2 class="spip">Pratique</h2>
     
    <p class="spip">bla bla bla bla</p>
     
    <p class="spip">• <strong class="spip">Les créneaux d’accueil sont les suivants</strong><br></p>
    En gros entre chaque <hr> c'est un div pour moi que je dois stylé, j'ai regardé php DOM mais je ne sais pas comment procéder

  4. #4
    Membre éclairé Avatar de MTroy_
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut
    Dans ce cas il faudrait te tourner vers une librairie appropriée.
    Ce sera plus vite construit qu'en te prenant la tête à créer une longue liste de pattern.

    Je te suggère simplehtmldom : http://simplehtmldom.sourceforge.net/

    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
    // Création du DOM à partir de la page cible
    $document = file_get_html('http://www.site.com/');
     
    // Extraction du contenu de toutes les cellules <td>
    foreach($document->find('td') as $cell) 
           echo $cell->innertext.'<br>';
     
    // Extraction du contenu de tout les titre h2
    foreach($document->find('h2') as $cell) 
           echo $cell->innertext.'<br>';
     
    // Extraction du contenu de tout les textes importants de classe spip
    foreach($document->find('strong.spip') as $strongText) 
           echo $strongText->plaintext.'<br>';
     
    Ou aller plus loin et modifier les contenus à la volée en sortie :
     
    // Extraction du contenu de tout les parapgraphes de classe spip
    $html->find('p[class=spip]', 0)->innertext = 'nouveau texte';
     
    modifier le style de tes div après un hr si tes div on des id ou classes :
    foreach($document->find('div.class_de_la_div') as $div) 
          $div->class = 'classe de remplacement';

  5. #5
    Membre éclairé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Par défaut
    Citation Envoyé par MTroy_ Voir le message
    Dans ce cas il faudrait te tourner vers une librairie appropriée.
    Ce sera plus vite construit qu'en te prenant la tête à créer une longue liste de pattern.

    Je te suggère simplehtmldom : http://simplehtmldom.sourceforge.net/

    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
    // Création du DOM à partir de la page cible
    $document = file_get_html('http://www.site.com/');
     
    // Extraction du contenu de toutes les cellules <td>
    foreach($document->find('td') as $cell) 
           echo $cell->innertext.'<br>';
     
    // Extraction du contenu de tout les titre h2
    foreach($document->find('h2') as $cell) 
           echo $cell->innertext.'<br>';
     
    // Extraction du contenu de tout les textes importants de classe spip
    foreach($document->find('strong.spip') as $strongText) 
           echo $strongText->plaintext.'<br>';
     
    Ou aller plus loin et modifier les contenus à la volée en sortie :
     
    // Extraction du contenu de tout les parapgraphes de classe spip
    $html->find('p[class=spip]', 0)->innertext = 'nouveau texte';
     
    modifier le style de tes div après un hr si tes div on des id ou classes :
    foreach($document->find('div.class_de_la_div') as $div) 
          $div->class = 'classe de remplacement';
    Moi je suis plutôt aller ver php DOM voilà ce que j'ai fait
    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
    29
    30
    31
    32
    33
    34
    35
     
    <?php 
    									// récupéré la page html !
    									$tab = '[(#TEXTE|texte_script)]';  	
     
    								   $DOM = new DOMDocument;
    								   $DOM->loadHTML($tab);
     
    								   //get all H1
    									$hr = $DOM->getElementsByTagName('hr');
    									$h2 = $DOM->getElementsByTagName('h2');
    									$p = $DOM->getElementsByTagName('p');
     
     
    									$i_h2=0;
    									$i_p=1;
     
     
    								   //display all H1 text
    								   for ($i = 0; $i < $hr->length; $i++){
    										echo '<div class="practical-info">';
    											echo '<div class="heading">';
    												echo '<strong class="title">'.$h2->item($i_h2)->nodeValue.'</strong>';
    												$i_h2++;
    											echo '</div>';
     
    											echo '<span class="patch"></span>';
    											if ($p->item($i_p)->nodeValue != null){
    											echo '<p>'.$p->item($i_p)->nodeValue .'</p>';
    											$i_p++;
    											}
    										echo '</div>';
    										}
     
    ?>
    Mais après j'ai vite lâcher avec les balises <p>

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Avec DOMDocument tu pourrais simplement utiliser la méthode getElementsByTagName pour trouver tes balises hr

    EDIT j'avais pas vu ta dernière réponse...

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/03/2009, 16h53
  2. Parsing fichier texte volumineux
    Par LeChacal619 dans le forum Documents
    Réponses: 1
    Dernier message: 19/12/2008, 02h15
  3. Réponses: 13
    Dernier message: 04/09/2007, 00h21
  4. parsing de fichier texte
    Par robert_trudel dans le forum Access
    Réponses: 4
    Dernier message: 03/06/2006, 18h45
  5. Parsing d'un fichier texte
    Par anibal dans le forum C
    Réponses: 2
    Dernier message: 18/04/2006, 15h33

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