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 texte hors balises HTML - Expressions régulières [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Points : 42
    Points
    42
    Par défaut Récupérer texte hors balises HTML - Expressions régulières
    Bonjour,

    J'ai besoin de séparer les textes avec balises des textes sans balises pour ensuite appliquer ces mises en forme vers Excel.

    Un exemple de texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <b><u>Observations journalières de 7h00 ce jour à 7h00 le lendemain :<br><br>
    </u>Routage :</b> 240 000 m³/j suite arrêt SEC jusqu'au 27/07 et 30 000 m³/j de SEG depuis le 10/06.<br><b>La Frette : </b>Siphon du SDA batardé depuis le 05/11/13 pour réfection, by-pass vers aval CAA.<br>
    <b>Prétraitement :</b> 15 bassins en service. RTS vers AIIIp et AIV. <br>
    <b>AI :</b> CP1 et 4 vides.      <b>AII :</b> DS11 vide. CP5 et 8 vides. Flot 1 dispo sur 1 file. File bio passée en fote charge à 14h00.<br>
    <b>AIII :</b> CP2, 5 et 7 vides.      <b>AIV :</b> CS8 vide.      <b>AS : </b>DP9 en rinçage. <br><b>FIAB :</b> Maillage avec AIII. Démaillage de 0h00 à 0h55, de 1h10 à 2h30 et à partir de 2h45 sur H2S élevé en entrée désodo. <br>
    <b>Clarif :</b> Actiflos 3 et 6 HS. Capacité à 25 m³/s sans secours. <br>
    <b>Nit/Dénit :</b> Capacité à 45 m³/s. Atelier Biofors à l'arrêt pour nettoyage des filtres à 10h45.      <b>PDN :</b> RAS. <br>
    <b>TDJ :</b> Capacité passée à 600 m³/h à 8h50 pour nettoyage échangeurs. <br><b>Configuration mixte avec AIV de 15h15 à 19h45 et à partir de 4h30 (P-PO4). Configuration mixte avec AI, AII et AIII de 19h45 à 1h30 suite TP.<br>
    Fonctionnement de la Clarif en TP de 19h45 à 0h00.<br>Alimentation Clarif :</b> 1 225 000 m³ provenant de la bio et 191 000 m³ provenant de la VAS (de 18h30 à 1h25).<br>
    <b>Alimentation Nit :</b> 470 000 m³ provenant de la biologie et 1 416 000 m³ provenant de la Clarif.<br>
    <b>Rejet VB1 : </b>0 m³.      <b>Rejet Biologie par VC51/52 :</b> 0 m³.      <b>Rejet biologique par relevage :</b> 0 m³.<br><b>Rejet Clarif C5 :</b> 0 m³.      <b>Rejet Nit C5 :</b> 1 886 000 m³.
    Pour récupérer les textes avec balises j'utilise l'expression régulière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('#<([ibu])>(.*?)</\1>#', $data, $out);
    Qui me donne cela que j'affiche le contenu du tableau $out :

    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
    Array
    (
        [0] => Array
            (
                [0] => <b><u>Observations journalières de 7h00 ce jour Ã* 7h00 le lendemain :<br><br></u>Routage :</b>
                [1] => <b>La Frette : </b>
                [2] => <b>Prétraitement :</b>
                [3] => <b>AI :</b>
                [4] => <b>AII :</b>
                [5] => <b>AIII :</b>
                [6] => <b>AIV :</b>
                [7] => <b>AS : </b>
                [8] => <b>FIAB :</b>
                [9] => <b>Clarif :</b>
                [10] => <b>Nit/Dénit :</b>
                [11] => <b>PDN :</b>
                [12] => <b>TDJ :</b>
                [13] => <b>Configuration mixte avec AIVÂ*de 15h15 Ã* 19h45 etÂ*Ã* partir deÂ*4h30 (P-PO4). Configuration mixte avec AI, AII etÂ*AIII de 19h45 Ã* 1h30 suite TP.<br>Fonctionnement de la Clarif en TP de 19h45 Ã* 0h00.<br>Alimentation Clarif :</b>
                [14] => <b>Alimentation Nit :</b>
                [15] => <b>Rejet VB1 : </b>
                [16] => <b>Rejet Biologie par VC51/52 :</b>
                [17] => <b>Rejet biologique par relevage :</b>
                [18] => <b>Rejet Clarif C5 :</b>
                [19] => <b>Rejet Nit C5 :</b>
            )
    J'ai ici tous les textes avec balise, cependant, je souhaiterai dans la foulée récupérer les textes sans balises afin qu'il soit dans ce tableau, il faut que ces textes soit dans le même ordre que le texte que j'ai renseigné plus haut.

    Quelqu'un pour m'aider ? Je suis débutante en expressions régulière.

    Merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    déjà vous pouvez remplacer les * par [^<] qui veut dire "tous les caractères sauf <"

    essayez comme ça :
    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
    36
    37
    38
    39
    <?php
     
    $contenu = "<b><u>Observations journalières de 7h00 ce jour à 7h00 le lendemain :<br><br>
    </u>Routage :</b> 240 000 m³/j suite arrêt SEC jusqu'au 27/07 et 30 000 m³/j de SEG depuis le 10/06.<br><b>La Frette : </b>Siphon du SDA batardé depuis le 05/11/13 pour réfection, by-pass vers aval CAA.<br>
    <b>Prétraitement :</b> 15 bassins en service. RTS vers AIIIp et AIV. <br>
    <b>AI :</b> CP1 et 4 vides.      <b>AII :</b> DS11 vide. CP5 et 8 vides. Flot 1 dispo sur 1 file. File bio passée en fote charge à 14h00.<br>
    <b>AIII :</b> CP2, 5 et 7 vides.      <b>AIV :</b> CS8 vide.      <b>AS : </b>DP9 en rinçage. <br><b>FIAB :</b> Maillage avec AIII. Démaillage de 0h00 à 0h55, de 1h10 à 2h30 et à partir de 2h45 sur H2S élevé en entrée désodo. <br>
    <b>Clarif :</b> Actiflos 3 et 6 HS. Capacité à 25 m³/s sans secours. <br>
    <b>Nit/Dénit :</b> Capacité à 45 m³/s. Atelier Biofors à l'arrêt pour nettoyage des filtres à 10h45.      <b>PDN :</b> RAS. <br>
    <b>TDJ :</b> Capacité passée à 600 m³/h à 8h50 pour nettoyage échangeurs. <br><b>Configuration mixte avec AIV de 15h15 à 19h45 et à partir de 4h30 (P-PO4). Configuration mixte avec AI, AII et AIII de 19h45 à 1h30 suite TP.<br>
    Fonctionnement de la Clarif en TP de 19h45 à 0h00.<br>Alimentation Clarif :</b> 1 225 000 m³ provenant de la bio et 191 000 m³ provenant de la VAS (de 18h30 à 1h25).<br>
    <b>Alimentation Nit :</b> 470 000 m³ provenant de la biologie et 1 416 000 m³ provenant de la Clarif.<br>
    <b>Rejet VB1 : </b>0 m³.      <b>Rejet Biologie par VC51/52 :</b> 0 m³.      <b>Rejet biologique par relevage :</b> 0 m³.<br><b>Rejet Clarif C5 :</b> 0 m³.      <b>Rejet Nit C5 :</b> 1 886 000 m³.";
     
    $regex = "/<([ibu])>([^<]*)<\/\\1>([^<]*)/";
     
    preg_match_all($regex, $contenu, $resultats, PREG_SET_ORDER);
     
     
    ?>
     
    <table>
     
    	<?php foreach ($resultats as $r) {?>
    		<tr>
    			<td>
    				<?php echo htmlspecialchars(trim($r[2], " :"));?>
    			</td>
    			<td>
    				<?php echo htmlspecialchars(trim($r[3], " ."));?>
    			</td>
    		</tr>
    	<?php }?>
     
    </table>
     
    <hr/>
     
    <?php echo $contenu;?>

    vous pouvez aussi tester l'expression régulière sur ce site :
    https://regex101.com/r/zG1yC1/1

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Points : 42
    Points
    42
    Par défaut
    J'ai changer mon regex qui donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('#<([ibu])>(.*?)</\1>|<br>|([^<]*)#', $data, $out);
    Ce qui donne exactement se que je voulais :
    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
    36
    37
    38
    39
    Array
    (
        [0] => Array
            (
                [0] => <b><u>Observations journalières de 7h00 ce jour Ã* 7h00 le lendemain :<br><br></u>Routage :</b>
                [1] =>  240 000 m³/j suite arrêt SEC jusqu'au 27/07 et 30 000 m³/j de SEG depuis le 10/06.
                [2] => <br>
                [3] => <b>La Frette : </b>
                [4] => Siphon du SDA batardé depuis le 05/11/13 pour réfection, by-pass vers aval CAA.
                [5] => <br>
                [6] => <b>Prétraitement :</b>
                [7] =>  15 bassins en service. RTS vers AIIIp et AIV. 
                [8] => <br>
                [9] => <b>AI :</b>
                [10] =>  CP1 et 4 vides.Â*Â*Â*Â*Â*Â*
                [11] => <b>AII :</b>
                [12] =>  DS11 vide. CP5 et 8 vides. Flot 1 dispo sur 1 file. File bio passée en fote chargeÂ*Ã* 14h00.
                [13] => <br>
                [14] => <b>AIII :</b>
                [15] =>  CP2, 5 et 7 vides.Â*Â*Â*Â*Â*Â*
                [16] => <b>AIV :</b>
                [17] =>  CS8 vide.Â*Â*Â*Â*Â*Â*
                [18] => <b>AS : </b>
                [19] => DP9 en rinçage. 
                [20] => <br>
                [21] => <b>FIAB :</b>
                [22] =>  Maillage avec AIII. Démaillage de 0h00 Ã* 0h55, de 1h10 Ã* 2h30 et Ã* partir de 2h45 sur H2S élevé enÂ*entrée désodo.Â*
                [23] => <br>
                [24] => <b>Clarif :</b>
                [25] =>  Actiflos 3 et 6 HS. Capacité Ã* 25 m³/s sans secours. 
                [26] => <br>
                [27] => <b>Nit/Dénit :</b>
                [28] =>  Capacité Ã* 45 m³/s. Atelier Biofors Ã* l'arrêt pour nettoyage des filtres Ã* 10h45.Â*Â*Â*Â*Â*Â*
                [29] => <b>PDN :</b>
                [30] =>  RAS. 
                [31] => <br>
                [32] => <b>TDJ :</b>
                [33] =>  Capacité passée Ã*Â*600 m³/h Ã* 8h50 pour nettoyage échangeurs. 
                [34] => <br>
    Un grand merci à toi .

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

Discussions similaires

  1. Récupérer une valeur d'une expression régulière
    Par totofe49 dans le forum Langage
    Réponses: 2
    Dernier message: 18/10/2011, 11h04
  2. [RegEx] récupérer les données balise html
    Par kaayna dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2010, 14h08
  3. Réponses: 0
    Dernier message: 25/02/2008, 14h23
  4. [RegEx] Extraire un texte entres balises html ?
    Par booraq dans le forum Langage
    Réponses: 2
    Dernier message: 01/07/2007, 15h56
  5. Réponses: 1
    Dernier message: 06/06/2006, 09h47

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