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 26/02/2007, 14h05   #1
Fabouney
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut s'arrêter à un endroit précis

Bonjour à tous et à toute.

admettons j'ai une chaine comme ceci :

Code :
$content="<div>tes test test test</div></td></tr></table></div>";
que dois-je ajouté à mon pattern pour que si je prend:

Code :
$pattern='/^<div>(.*)<\/div>/i';
pour qu'il ne prenne pas : "</td></tr></table>"
autrement dit pour qu'il s'arreter à la premiere occurence de </div> trouvée.

Merci d'avance,
Cordialement.
  Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 14h12   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Il faut ajouter l'option de non gourmandise : U (à placer après le délimiteur de fin), puisque comme vous pouvez le constater actuellement les expressions régulières en PHP cherchent une correspondance la plus longue possible. A noter qu'on peut aussi utiliser la syntaxe Perl : .*? au lieu de .* et .+? au lieu de .+ pour marquer ce caractère non gourmand.


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 14h25   #3
Fabouney
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
merci pour ta réponse, mais qd j'utilise l'option /iU il me prend beaucoup trop de chose inutile dans le premier masque que je sauvegarde.

voici ma chaine :

Code :
$content="</tr></table></form><DIV style="padding-top:20px;padding-left:20px;"><table width="600" border="0" cellspacing="0" cellpadding="0"><tr height="14px"><td width="14px"><img src="imgT/puce_rouge.gif" width="14" height="14"></td><td width="580"><DIV class="texterouge" style="padding-left:10px;">le 26/02/2007 à 14:18</DIV></td></tr><tr><td colspan="2"><DIV class="texte" style="padding-top:10px;padding-bottom:20px;">VERONIQUE SANSON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ALIA SOUZA</DIV></td></tr><tr height="14px"><td width="14px"><img src="imgT/puce_rouge.gif" width="14" height="14"></td><td width="580"><DIV class="texterouge" style="padding-left:10px;">le 26/02/2007 à 14:21</DIV></td></tr><tr><td colspan="2"><DIV class="texte" style="padding-top:10px;padding-bottom:20px;">CHAGRIN_D'AMOUR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CHACUN FAIT CE QUI LUI PLAIT</DIV></td></tr></table></DIV></DIV>";
je souhait récupérer dans ce cas :

Citation:
CHAGRIN_D'AMOUR et CHACUN FAIT CE QUI LUI PLAIT
avant ceci il y a d'autre masque identique, mais je doit prendre le dernier.
si vous pouvez proposer quelque chose :s.

moi j'avais fait ceci:

Code :
$pattern='/<DIV[ ]?.*>(.+)?(?:&nbsp;){6}(.+)?<\/DIV>/i';
mais il me retourne :

Code :
1
2
3
4
5
6
Array
(
    [0] => </tr></table></form>......</DIV>
    [1] => CHAGRIN_D'AMOUR
    [2] => CHACUN FAIT CE QUI LUI PLAIT</DIV></td></tr></table></DIV>
)
Cordialement.
  Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 14h34   #4
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Je ne sais pas si c'est ton cas, mais il faut faire attention à l'option U utilisée avec les modificateurs de quantificateurs : ça inverse le caractère greedy/ungreedy de "?" !

Moralité, pour moi en tous cas, jamais de U, que des opérateurs correctement placés.
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h37.


 
 
 
 
Partenaires

Hébergement Web