Extraire des scripts par regexp
Résolu
Maliq
Messages postés
10
Statut
Membre
-
Maliq Messages postés 10 Statut Membre -
Maliq Messages postés 10 Statut Membre -
Bonjour,
bonjour j'ai un probleme semblable.. en faite j'ai une chaine comme cela:
str = "html 1<script>script 1</script>html 2<script>script 2</script>html 3";
je veux en extraire les tag script dans un tableau scriptTble:
scriptTble[0] = "<script>script 1</script>"
scriptTble[1] = "<script>script 2</script>"
et retourner une chaine de str sans les script:
str = "html 1 html 2 html 3"
j'aimerai utiliser les expreg puisque c plus elegant et rapide.
je fais ceci pour evaluer les script retourné par des requettes ajax, j'ai deja essayé par la methode d'affacter toute la chaine a un element <div> du DOM puis extraire les scripts par mydiv.getElementsByTagName('script') mais je me suis appercu que sur certain browser ca fait executer les scripts 2 fois
Nb le nombre des scripts dans le code est pas connu d'avance il peu y avoir aucun comme plusieurs
merci en avance
bonjour j'ai un probleme semblable.. en faite j'ai une chaine comme cela:
str = "html 1<script>script 1</script>html 2<script>script 2</script>html 3";
je veux en extraire les tag script dans un tableau scriptTble:
scriptTble[0] = "<script>script 1</script>"
scriptTble[1] = "<script>script 2</script>"
et retourner une chaine de str sans les script:
str = "html 1 html 2 html 3"
j'aimerai utiliser les expreg puisque c plus elegant et rapide.
je fais ceci pour evaluer les script retourné par des requettes ajax, j'ai deja essayé par la methode d'affacter toute la chaine a un element <div> du DOM puis extraire les scripts par mydiv.getElementsByTagName('script') mais je me suis appercu que sur certain browser ca fait executer les scripts 2 fois
Nb le nombre des scripts dans le code est pas connu d'avance il peu y avoir aucun comme plusieurs
merci en avance
3 réponses
-
j'ai utilisé ce code:
var pat = /\<script\>.*\<\/script\>/gi;
var str ="html 1<script>script 1</script>html 2<script>script 2</script>html 3";
alert(str.match(pat)[0]);
alert(str.match(pat)[1]);
alert(str.replace(pat, " "));
mais il me retourne:
<script>script 1</script>html 2<script>script 2</script>
undefined
html 1 html 3 -
Pourquoi utiliser spécialement un regexp quand on peu faire sans ?
<?php $symbole = array("<script>","</script>"); $chaine = "html 1<script>script 1</script>html 2<script>script 2</script>html 3"; $remplace = str_replace($symbole,'',$chaine); echo $remplace; ?>
-
bon finalement j'ai reussi a resoudre le probleme: ceci est la fonction qui evalue les script contenue dans une chaine (respText) puis retrourne une chaine sans ces scripts
function evalScripts(respTxt){ var pat1 = /<script>.{0,8}([^<][^\/][^s][^c][^r][^i][^p][^t][^>])*<\/script>/gi; var pat2 = /(\'[^\']*')|(\"[^\"]*\")/gi; var scripts = new Array; scripts = respTxt.replace(pat2, "").match(pat1); for(var i in scripts){ if (dj_global.execScript) dj_global.execScript(scripts[i]); else if (dj_global.eval) dj_global.eval(scripts[i]); else eval(scripts[i]); respTxt = respTxt.replace(RegExp(scripts[i], "g"), ""); } return respTxt; }
nb. pat2 est pour ne pas selectionner les scripts entre guillements ou strophe (cela veux dire c du text et pas de script)