Syntaxe des masques de preg_match() - probléme de nouvelle ligne [Résolu]

Signaler
Messages postés
94
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
13 juin 2012
-
Messages postés
94
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
13 juin 2012
-
Bonjour,

j'ai cette fonction


preg_match('/'.$t1.'(.*)'.$t2.'/',$source,$resultat) qui fonctionne tres bien sauf si  il y a un retour à la ligne entre les balise $t1 et $t2     ( ce que je veux recuperer )

la doc (http://uk3.php.net/manual/fr/reference.pcre.pattern.syntax.php)  dit:

pour le masque (.*)

. Point  -->Remplace n'importe quel caractère, hormis le caractère de nouvelle ligne (par défaut) ; 
 
En dehors d'une classe de caractères, un point remplace n'importe quel caractère, même invisible et à l'exception du caractère de nouvelle ligne. Avec l'option PCRE_DOTALL le point remplace n'importe quel caractère, même le caractère de nouvelle ligne. La gestion des points et complètement indépendante de <var>^</var> et <var>$</var>. Le seul point commun est que les deux ont un comportement particulier vis-à-vis des caractères de nouvelle ligne. Le point n'a pas de comportement particulier dans une classe de caractères.


J'ai donc essayé d'ecrire:
preg_match('/'.$t1.'(.*)'.$t2.'/',$source,$resultat,PCRE_DOTALL)  mais la constante n'est pas reconue (je suis avec PHP 5.2.0)

il indique aussi que l'option peut être changée à l'intérieur du masque lui-même, avec des séquences mises entre "<var>(?</var>" et "<var>)</var>"   donc ici (?s)  ou un dérivé..

Je n'arrive pas à resoudre ce probléme..  comment faut t'il ecrire ce masque ?

D'avance Merci


 

1 réponse

Messages postés
94
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
13 juin 2012

je remerci sparko du tchat (IRC) pour m'avoir donner la réponse.

En fait il faut utilisé l'option gourmant 's' et ensuite le restreindre par un ? dans la parenthése...  

ce qui donne:  

 preg_match('/'.$t1.'(.*?)'.$t2.'/s',$source,$resultat)

$t1 et $t2 etant les balise qui delimite ce que l'on veut detecté.