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   -
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
A voir également:

3 réponses

Maliq Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
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;
?>

0
Maliq Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour et merci Tryan44
en faite j'ai peut etre oublié de mentionner que je cherche la solution coté client cela veux dire en javascript et nous somme bien sur la bonne rubrique ..
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
Oupsss, autant pour moi, j'ai zappé la rubrique du poste :)
0
Maliq Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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)
0