Afficher un message
Vieux 25/07/2007, 11h32   #2
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: exec sous internet explorer qui ne parche pas

Le 25/07/2007 11:05, Etienne SOBOLE a écrit :
> salut j'ai une chaine de caractère qui contient ca
>
> <a href='#' [...] <div


Attention, ici il y a une erreur : tu mets un élément de type %block%
dans un élément A qui n'accepte que des %inline%. Tu devrais envisager
d'y mettre un SPAN plutôt qu'un DIV.

> style='padding-left:16px;' style='padding-bottom:2px;'>[...]


Ça, je crois que c'est une erreur aussi car tu définis deux fois
l'attribut style : certains navigateurs pourraient ne garder que
la première définition, d'autres que la seconde.

Je pense que ce que tu voulais faire est :
style='padding-left:16px; padding-bottom:2px;'

> et j'ain une expression régulière qui est celle-ci
>
> var re =
> /\<a.*\>\<img.*\>(&nbsp+(.*)(&nbsp+\<div.*\>.*\ <\/div\>\<\/a\>/i;


Pourquoi tous ces \ ? Que je sache, les chevrons > et < ne sont pas des
caractères réservés dans une RegExp ?

var re =
/<a.*><img.*>(&nbsp+(.*)(&nbsp+<div.*>.*<\/div><\/a>/i;

> lorsque j'execute
> var tRes = re.exec(text);
>
> et bien sous FireFox j'ai bien le résultat voulu. a savoir je retrouve
> Adresse de Facturation 9
> et sous Internet Explorer et bien ca plante tout simplement.
>
> Une idée??


Ce que j'imagine, c'est peut-être que l'expression est trop complexe
pour lui.

Une idée serait de remplacer .* par [^>]* aux endroits où il ne peut en
principe pas y avoir de chevrons fermants. Donc :

var re =
/<a[^>]*><img[^>]*>(&nbsp+(.*)(&nbsp+<div[^>]*>.*<\/div><\/a>/i;

Une autre idée est de lui demander de privilégier les résultats les plus
courts plutôt que les plus longs mais je ne sais pas si ça joue vraiment
sur les performances :

var re =
/<a.*?><img.*?>(&nbsp+?(.*?)(&nbsp+?<div.*?>.*? <\/div><\/a>/i;
  Réponse avec citation
 
Page generated in 0,05110 seconds with 9 queries