Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

exec sous internet explorer qui ne parche pas

3 réponses
Avatar
Etienne SOBOLE
salut j'ai une chaine de caractère qui contient ca

<a href='#' class='stattask' onclick='return selectSrv(10,
"13021756");'><img class='stattask' src='/wsi/std/svs.gif' alt='13034113'
title='13034113'>&nbsp;Adresse de Facturation 9&nbsp;<div
style='padding-left:16px;' style='padding-bottom:2px;'>Code
Postal:<b>34184</b> Num:<b>13034113</b></div></a>

et j'ain une expression régulière qui est celle-ci

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??

Merci

3 réponses

Avatar
Olivier Miakinen
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;

Avatar
Olivier Miakinen
Le 25/07/2007 12:32, je répondais à Étienne Sobole :

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 ?


Aussi bizarre que ça puisse paraître, ces < et > dans l'expression
rationnelle ont des chances d'être la cause du plantage. La norme ne
me semble pas très claire en tout cas et je n'arrive pas à voir si
« < » doit être traduit en « < » comme dans les chaînes, ou bien si
c'est une erreur.

Essaye déjà ça, et si ça ne marche toujours pas regarde mes autres
propositions. Mais en tout cas, les deux attributs style et le DIV
dans un A restent des erreurs également, qu'il faudrait corriger.


Avatar
Etienne SOBOLE
Salut.

je vais tester, mais finalement dans l'urgence, j'ai mis un Id sur la partie
que je voulais retrouver, et j'ai laisser tomber l'expression régulière.

mais je vais quand meme essayer pour savoir si c'est ca!
Merci

Etienne

"Olivier Miakinen" <om+ a écrit dans le message de news:
46a9bc3d$
Le 25/07/2007 12:32, je répondais à Étienne Sobole :

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 ?


Aussi bizarre que ça puisse paraître, ces < et > dans l'expression
rationnelle ont des chances d'être la cause du plantage. La norme ne
me semble pas très claire en tout cas et je n'arrive pas à voir si
« < » doit être traduit en « < » comme dans les chaînes, ou bien si
c'est une erreur.

Essaye déjà ça, et si ça ne marche toujours pas regarde mes autres
propositions. Mais en tout cas, les deux attributs style et le DIV
dans un A restent des erreurs également, qu'il faudrait corriger.