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

  1. #1
    Membre régulier
    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
    Points : 115
    Points
    115
    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 régulier 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
    Points : 83
    Points
    83
    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 régulier
    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
    Points : 115
    Points
    115
    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 régulier 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
    Points : 83
    Points
    83
    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 régulier
    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
    Points : 115
    Points
    115
    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 éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    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 389
    Points : 10 422
    Points
    10 422
    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, 15h53
  2. Parsing fichier texte volumineux
    Par LeChacal619 dans le forum Documents
    Réponses: 1
    Dernier message: 19/12/2008, 01h15
  3. Réponses: 13
    Dernier message: 03/09/2007, 23h21
  4. parsing de fichier texte
    Par robert_trudel dans le forum Access
    Réponses: 4
    Dernier message: 03/06/2006, 17h45
  5. Parsing d'un fichier texte
    Par anibal dans le forum C
    Réponses: 2
    Dernier message: 18/04/2006, 14h33

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