adn Posté 14 Décembre 2008 Posté 14 Décembre 2008 Bonjour, Petite question concerant eregi. J'utilise la fonction sur du code html et je souhaite récupérer le lien contenu dans l'attribut SRC de la balise IMG. Voici ce que je fais: eregi('src="(.*)"', $html, $regs) Le problème c'est que je récupère le code compris entre src=" et la dernière occurrence de " dans le code html analysé alors que je voudrais qu'il s'arrête à la première " rencontrée. Y a-t-il moyen de lui dire de s'arrêter à la première apostrophe ?
Phobos Posté 14 Décembre 2008 Posté 14 Décembre 2008 (modifié) Salut, eregi('src="(.*?)"', $html, $regs) le ? active l'option Ungreedy (U), tu peux aussi l'utiliser de cette façon : eregi('#src="(.*)"#U', $html, $regs) Modifié 14 Décembre 2008 par Phobos
petitnuage Posté 14 Décembre 2008 Posté 14 Décembre 2008 J'en profite pour ajouter quelques liens de référence, comme : Regular Expressions: Repetition with Star and Plus ou bien encore : REGex TESTER Regular Expression Test Tool
adn Posté 14 Décembre 2008 Auteur Posté 14 Décembre 2008 Merci pour vos réponses. J'ai essaye eregi('src="(.*?)"', $html, $regs) et j'obtiens Warning: eregi() [function.eregi]: REG_BADRPT Avec eregi('#src="(.*)"#U', $html, $regs) Je n'ai aucun résultat Je vais jeter un oeil aux liens....
Phobos Posté 14 Décembre 2008 Posté 14 Décembre 2008 (modifié) Excuse-moi, il faut utiliser preg_match ou preg_match_all et non eregi pour avoir l'option Ungreedy : preg_match('#src="(.*)"#U', $html, $regs) ereg est une fonction posix, l'option ungreedy n'y existe pas contrairement à avec les fonctions pcre Modifié 14 Décembre 2008 par Phobos
jcaron Posté 15 Décembre 2008 Posté 15 Décembre 2008 (modifié) src="[^"]*" [^"] signifie 'n'importe quel caractère sauf "'. J'ajoute que pour du HTML, l'utilisation de regexps est toujours risqué, le HTML étant souvent mal formé (et souvent plus complexe qu'on ne le pense à première vue). Par exemple certains utilisent des ' et pas des " pour les attributs, voire ne mettent pas de guillements du tout... Il ne faut pas oublier non plus que l'ordre des attributs peut être variable (img src=xxx ou img class=xxx src=xxx par exemple), que src=xxx est un attribut d'autres éléments (iframe...), etc. Un "vrai" parser HTML est recommandé (mais je ne sais pas s'il y en a un en PHP? En perl il y a HTML::Parser et ses dérivés). Jacques. edit: minor edit Modifié 15 Décembre 2008 par jcaron
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant