Expression régulière qui supprime les contenus des balises Javascript [Résolu]

Signaler
Messages postés
19
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
6 juillet 2007
-
Messages postés
19
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
6 juillet 2007
-
Bonjour,
Je suis vraiment rouillé sur regexp, je veux supprimer les balises javascripts et leurs contenu,
mon but est de récuperer le contenu d'une page, voici la fonction:

function notag($txt)
{
    //Supprime d'abord les contenus des balises Javascript
    $txt = ereg_replace("<script * ([^<]*) </script>", "" , $txt) ;<---- c'est ici que çà ne marche pas
   
    // Vire tous les balises
   // ^ signifie "tout sauf"
   // + signifie 1 car au moins
   $pattern = "<[^>]+>";
   // remplace par vide
   return(ereg_replace($pattern,"",$txt));
}
Si vous avez une idée ?
JabsDev

7 réponses

Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
2
Salut

Bon voilà ta petite regexp : preg_replace("/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/","", $txt);
Elle enlève tout en même temps....

Bonne prog @+

-- The Rubik's Man --
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Salut,

et si t'as deux balises script, ça doit aussi bouffer ce que t'as entre les deux...

une regexp n'assureras pas de résultat garenti pour cette raison...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
2
Ok donc tu n'as pas testé la regexp.... tiens je vais meme te donner une chaine de caractères pour tester et tu verras par toi meme...

<?php
    $var = "<html><head><script type='text/javascript'>var blabler = function(){alert('salut')};</script><script type='text/javascript'>var ddd = function(){alert('sedddd')};</script></head><script type='text/javascript'>var fff = function(){alert('fdgfsgt')};</script>salut vous<script type='text/javascript'>var fffk = function(){alert('sfdfds')};</script></html>";

    echo htmlspecialchars(preg_replace("/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/","", $var));
?>

comme tu vois j'ai mis pas mal de balise script... et dans le body j'ai mis une span entre 2 scripts... et donc tu verras par toi meme que tout fonctionne parfaitement

-- The Rubik's Man --
Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
2
Je ne comprends pas ce que tu veux dire... car oui si il y a 2 balises script comme : " <script> ..... </script>"
Tout ce qu'il y a à l'intérieur est également supprimé avec ma regexp !!! et pas seulement les balises script

Peut être que je ne t'ai pas compris....

-- The Rubik's Man --
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Salut,

<script ...> javascript1</script>

code html qui sera également supprimé, et qui ne devrait pas...

<script ...> javascript2</script>

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

Salut,
Pas très sur cette méthode... Il suffit simplement de mettre une variable ou un commentaire contenant "</script>" et le reste du contenu ne sera pas supprimer (du moins je crois...). Enfin c'est vraiment important si ce code sert à sécurisé quelque chose sinon cette méthode suffit amplement.

For every choice, a consequence (Fable)
Messages postés
19
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
6 juillet 2007

Merci beaucoup Rubiks10 , et à vous tous
JabsDev