Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2007, 14h48   #1
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
Par défaut Capture - La regex s'arrête trop tôt

Bonjour,

çà fait déjà quelques heures (et oui !) que je réfléchis sur cette satanée regex et j'trouve pas ce qui ne va pas.

Code :
1
2
3
4
5
6
7
8
$chaine = '<p class="c">chap1</p><p class="p">parag1</p>bla bla<p class="p">parag2</p>bla bla<p class="c">chap2';
 
$masque = '&<p class="c">.+</p>(?:<p class="p">(.+)</p>)+.*<p class="c">&Uis';
preg_match_all($masque, $chaine, $resultat);
 
echo '<pre>';
print_r($resultat);
echo '</pre>';
Voilà donc mon code. Ce que je souhaiterais faire : Capturer tous les <p class="p">...</p> d'un chapitre particulier (au pire je peux faire une regex par chapitre ce n'est pas un problème je n'ai pas beaucoup de chapitres)

Merci d'avance.

EDIT : J'ai oublié de dire que actuellement juste le premier <p class="p">...</p> était capturé.
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 23h03   #2
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
Bonsoir,

si, la voici :

Code :
1
2
3
4
5
6
7
8
9
$chaine = '<p class="c">chap1</p><p class="p">parag1</p>bla bla<p class="p">parag2</p>bla bla<p class="c">chap2';
 
	$pattern = "`<p class=\"p\">[^<]+</p>`mi";
	$masque = $pattern;
	preg_match_all($masque, $chaine, $matches);
 
	echo "<pre>";
		var_dump($matches);
	echo "</pre>";
Je me suis insipiré de ce site -> http://www.expreg.com/pregmatchall.php

bye
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 09h41   #3
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
Merci pour ta réponse, mais çà ne correspond pas à ce que je veux faire.

J'avais réussi à faire mon masque pour capturer tous les paragraphes mais je me suis rendue compte que ce n'était pas vraiment ce que je voulais. Je veux conserver l'arborescence, c'est à dire distinguer quels paragraphes appartiennent à tel chapitre.

On s'en rend compte quand on rajoute des paragraphes au deuxième chapitre

Code :
$chaine = '<p class="c">chap1</p><p class="p">parag1</p>bla bla<p class="p">parag2</p>bla bla<p class="c">chap2</p><p class="p">parag1 de l\'autre chapitre</p>bla bla';
En fait je pense que le masque ressemblerait plus à çà :

Code :
$masque = '&<p class="c">chap1</p>(?:<p class="p">(.+)</p>)+.*<p class="c">chap2</p>&Uis';
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 12h37   #4
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
Toujours pas trouvé le bon motif, par contre j'ai trouvé une bidouille qui me permet de conserver cette fameuse arborescence.

Si un dieu des RegEx est dans le coin je suis quand même encore intéressée
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h23.


 
 
 
 
Partenaires

Hébergement Web