petite regexp qui prend la tete

rebaj
Invité n'ayant pas de compte PHPfrance

16 janv. 2009, 12:54

Bonjour,

Je souhaite virer tous les "font-family: unFont;" d'un code source html.

J'écris donc cette regex, qui ne marche pas, ou est ce que je me trompe??

Code : Tout sélectionner

$pattern = "(font\-family:(.+);$)"; $string=ereg_replace($pattern,"",$string); echo $string;

merci pour vos lumières!

ViPHP
ViPHP | 3607 Messages

16 janv. 2009, 12:58

Euh... le $ en trop?
Sinon pour faire des tests rapides: http://lumadis.be ;)

Invité
Invité n'ayant pas de compte PHPfrance

16 janv. 2009, 13:26

ok je viens de tester, et je me rend compte que cette regexp:

Code : Tout sélectionner

/font-family(.+);/
me renvoie bien à partir de "font-family: maFont" sauf qu'ensuite il s'arrête au dernier ; rencontré sur la ligne, et non au premier! ce qui fait que souvent je me retrouve a virer

Code : Tout sélectionner

font-family: "Arial","sans-serif"; color: black;
aulieu de

Code : Tout sélectionner

font-family: "Arial","sans-serif";[code] il y a un moyen de spécifier que je veux qu'il s'arrête au premier trouvé? merci pour le testeur, super utile!

ViPHP
ViPHP | 3607 Messages

16 janv. 2009, 14:12

il faut utiliser le ? derrière le + afin de rendre l'opérateur "non-gourmand", ou alors utilsier l'option "U", je te laisse regarder le cours sur le site pour plus de détails ;)

Invité
Invité n'ayant pas de compte PHPfrance

16 janv. 2009, 15:57

Merci cela fait bien son effet!!!

Allez j'ouvre le débat : pourquoi diable une regexp serait-elle plus gourmande qu'on le lui demande?

++

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 janv. 2009, 16:37

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)


Quant à ta question sur le côté gourmand de la regexp, on peut retourner la question et se demander pourquoi, alors que tu lui offres une longue et magnifique chaine qui correspond tout autant à ton masque, tu voudrais qu'elle se contente de quelques miettes en s'arrêtant à la première bouchée ? ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
AB
ViPHP | 5818 Messages

16 janv. 2009, 17:51

Et puis de toutes façons quand il y a plusieurs possibilités, on doit bien définir un comportement par défaut :wink: