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 :

Expression régulière pour les balises HTML [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 53
    Points : 31
    Points
    31
    Par défaut Expression régulière pour les balises HTML
    Bonjour,
    Je vois beaucoup d'exemples et de messages concernant les balises HTML, mais je n'arrive pas à les mettre en œuvre sur mon problème.


    J'ai des balises HTML :
    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
    <table>
    	<tr>
    		<td>
    			<table border='1' align='center' bordercolor='#5079B2' cellpadding='4' width='700' cellspacing='0'>
    				<tr>
    					<td>informations importantes</td>
    					<td>autres infos</td>
    				</tr>
    			</table>
    			<table border='1' align='center' bordercolor='#5079B2' cellpadding='4' width='700' cellspacing='0'>
    				<tr>
    					<td>informations importantes</td>
    					<td>autres infos</td>
    				</tr>
    			</table>
    		</td>
    		<td>toto</td>
    	</tr>
    </table>
    Je souhaite ne garder que le "vrai" tableau : celui qui possède un border (tous mes "vrais" tableaux sont de la même forme). Le "faux" tableau ne sert juste qu'a la mise en page de ma page...
    Donc pour "purger" la page et ne garder que les éléments importants je souhaiterais faire une expression régulière.

    J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    preg_match_all("`<table border='1' align='center' bordercolor='#5079B2' cellpadding='4' width='700' cellspacing='0'>(.+)</table>`is",$infos2, $txt, 
    PREG_SET_ORDER );
    	print $txt[0][0];
    Malheureusement il me récupère les données jusqu'au dernier table (alors que j'aimerais qu'il s'arrête à la fin de celui-ci (car un "vrai" tableau ne peut contenir un autre tableau).

    Avez vous une idée de la modification de mon expression régulière ?

    Merci d'avance,
    Meloo

  2. #2
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 53
    Points : 31
    Points
    31
    Par défaut
    Je me répond à moi même, parce que j'ai trouvé ce qu'il fallait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match_all("`<table border='1' align='center' bordercolor='#5079B2' cellpadding='4' width='700' cellspacing='0'>(.*?)</table>`is",$infos2, $txt, 
    PREG_SET_ORDER );
    Pourtant ça fait 1 journée que je cherche comment faire, et que je ne trouve pas... C'est l'élément déclencheur de poser son texte sur un forum....

    Par contre quelqu'un peut-il m'expliquer la différence entre (.*?) et (.+).
    Ne signifient-ils pas tous les 2 que l'on souhaite récupérer toutes les occurrences ???

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par meloo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match_all("`<table border='1' align='center' bordercolor='#5079B2' cellpadding='4' width='700' cellspacing='0'>(.*?)</table>`is",$infos2, $txt, 
    PREG_SET_ORDER );
    Citation Envoyé par meloo Voir le message
    Par contre quelqu'un peut-il m'expliquer la différence entre (.*?)
    (.*?)</table> capturer 0 ou + caractère(s) en arrêtant à la première occurence de </table>.

    Avec l'option s, le meta-caractère point (.) accepte aussi les retour à ligne. Sans l'option s, </table> ne sera pas détecté s'il est sur une autre ligne.

    Citation Envoyé par meloo Voir le message
    et (.+).
    (.+)</table> capturer 1 ou + caractère(s) en arrêtant à la dernière occurence de </table>.

    Avec l'option s, le meta-caractère point (.) accepte aussi les retour à ligne ce qui revient à dire le dernier </table> du document. Sans l'option s, ce sera le dernier </table> précédant le prochain retour à la ligne.

    (.+?)</table> capturer 1 ou + caractère(s) en arrêtant à la première occurence de </table>.

    (.*)</table> capturer 0 ou + caractère(s) en arrêtant à la dernière occurence de </table>.

    Il faut éviter l'option U si possible et préférer *? ou +? pour passer en mode ungreedy (la prochaine occurence de).

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 53
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup Tisha Carpenter, je viens de me le noter dans mon carnet des choses à retenir !
    Tes explications sont claires, maintenant je comprends vraiment ce que j'ai fait !


    Bonne journée
    Meloo

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

Discussions similaires

  1. Expression régulière pour les Urls
    Par scriptiz dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 31/05/2011, 07h48
  2. Expression régulière lié à une balise html
    Par chris_013 dans le forum JSF
    Réponses: 3
    Dernier message: 28/05/2009, 14h34
  3. Expression reguliere pour les balises
    Par snopims dans le forum C#
    Réponses: 4
    Dernier message: 27/06/2008, 16h10
  4. Pb d'expression Réguliére : pour les amateurs
    Par tnodev dans le forum Général Java
    Réponses: 10
    Dernier message: 16/02/2008, 22h14
  5. [RegEx] Expression régulière pour les retours de lignes
    Par Marshall_Mathers dans le forum Langage
    Réponses: 3
    Dernier message: 01/03/2007, 09h42

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