Extraire des scripts par regexp
Résolu
Maliq
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Maliq Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Maliq Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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
A voir également:
- Extraire des scripts par regexp
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Extraire image pdf - Guide
- Extraire texte d'une image - Guide
- Extraire fichier rar - Guide
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
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
nb. pat2 est pour ne pas selectionner les scripts entre guillements ou strophe (cela veux dire c du text et pas de script)
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)