Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1997 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  suppression du code javascript dans la source HTML

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

suppression du code javascript dans la source HTML

n°1383520
the_bigboo
Posté le 08-06-2006 à 11:06:48  profilanswer
 

salut :)
 
en fait je voudrais obtenir une source épurée d'un code source HTML. Dans le genre de ce que fait strip_tags() mais en enlevant le contenu de code javascript... Voici ce que j'ai fait :
 

Code :
  1. $Start = microtime(true) ;
  2. $Data = file_get_contents($_GET['url']) ;
  3. // Epuration du code javascript
  4. $Data = preg_replace('/\b(<script)[.]*(<\/script> )\b/'," ",$Data) ;
  5. // Fin d'épuration JS
  6. echo strip_tags($Data,'<script>') ;
  7. $end = microtime(true );
  8. echo "<br />-----------------------------------------------------------<br />" ;
  9. $ElapsedTime = round(($end - $Start),4) ;
  10. echo "<h1>Temps ecoulé : ".$ElapsedTime." secondes...</h1>" ;


 
Le but est , vous l'aurez compris de supprimer tout ce qui se trouve entre balise <script></script>...
 
Et je galeeeeeeeeeeeeeere !!

mood
Publicité
Posté le 08-06-2006 à 11:06:48  profilanswer
 

n°1383526
boulax
Inserer phrase hype en anglais
Posté le 08-06-2006 à 11:10:31  profilanswer
 

ah.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1383529
anapajari
s/travail/glanding on hfr/gs;
Posté le 08-06-2006 à 11:13:01  profilanswer
 

a mon avis ta regex est foireuse :o

/<script.*?\/script>/gs

n°1383545
the_bigboo
Posté le 08-06-2006 à 11:19:50  profilanswer
 

anapajari a écrit :

a mon avis ta regex est foireuse :o

/<script.*?\/script>/gs



il n'en veut pas , il dit que le "g", il ne connais pas :/
 

Citation :

Warning: preg_replace() [function.preg-replace]: Unknown modifier 'g'


Message édité par the_bigboo le 08-06-2006 à 11:20:39
n°1383548
anapajari
s/travail/glanding on hfr/gs;
Posté le 08-06-2006 à 11:21:35  profilanswer
 

ah oui reflexe perl-istique!!! t'en as pas besoin en php, vire le de la fin mais laisse le s

n°1383551
the_bigboo
Posté le 08-06-2006 à 11:23:43  profilanswer
 

Code :
  1. preg_replace('/<script.*\/script>/'," ",$Data) ;


Ne marche pas non plus

n°1383557
boulax
Inserer phrase hype en anglais
Posté le 08-06-2006 à 11:25:02  profilanswer
 

laisse le s il t'as dit :sweat:


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1383559
anapajari
s/travail/glanding on hfr/gs;
Posté le 08-06-2006 à 11:26:11  profilanswer
 

et il manque le ? :o

n°1383566
the_bigboo
Posté le 08-06-2006 à 11:28:17  profilanswer
 

pas de ? il me faut une * pour que ca tienne compte des <script language="javascript"> et pas <script>uniquement, et ca doit aussi capturer tout ce qu'il y a entre ces balises

n°1383578
the_bigboo
Posté le 08-06-2006 à 11:33:03  profilanswer
 

trouvé... En fait yavait un souci avec les majuscules :sweat:
il fallait falre :

Code :
  1. preg_replace('/<[sS][cC][rR][iI][pP][tT].*\/[sS][cC][rR][iI][pP][tT]>/s'," ",$Data) ;

mood
Publicité
Posté le 08-06-2006 à 11:33:03  profilanswer
 

n°1383584
anapajari
s/travail/glanding on hfr/gs;
Posté le 08-06-2006 à 11:35:52  profilanswer
 

bravo!!!
Maintenant en 30 fois plus simple :o

/<script.*?\/script>/si


 
edit: et le point d'intérrogation est nécessaire!!!!
Pourquoi? si tu as le code suivant:
AAA

Code :
  1. <script type="text/javscript">
  2. ...
  3. </script>
  4. du html que tu veux garder
  5. <script type="text/javscript">
  6. ...
  7. </script>
  8. BBB


Ta regex etant greedy, tu vas te retrouver avec:

Code :
  1. AAA
  2. BBB


et non

Code :
  1. AAA
  2. du html que tu veux garder
  3. BBB



Message édité par anapajari le 08-06-2006 à 11:38:38
n°1383677
the_bigboo
Posté le 08-06-2006 à 12:48:20  profilanswer
 

greedy ??
 
PS : effectivement , c'est nettement plus simple :)

n°1383692
afbilou
pouet your life
Posté le 08-06-2006 à 13:17:07  profilanswer
 

greedy : les expressions régulieres sont par defaut gourmandes et cherchent a trouver la plus grande chaine de caracteres qui satisfasse le masque de recherche. En PCRE on peut modifier ce comportement pour satisfaire certains types de recherches.
 
ex :
<x>patate</x><x>carotte</x>
 
#<x>(.*)</x># -> match -> "patate</x><x>carotte"
#<x>(.*?)</x># -> match -> "patate" et "carotte", le ? derriere un * ou un + rend celui-ci non gourmand
#<x>(.*)</x>#U -> match -> "patate" et "carotte", l'option U rend les quantificateurs + et *, de l'ensemble du masque, non gourmands


Message édité par afbilou le 08-06-2006 à 13:18:49
n°1383694
the_bigboo
Posté le 08-06-2006 à 13:19:36  profilanswer
 

bon maintenant j'essaie de récupérer le contenu des balises a mais uniquement le lien que contient href...
Pour ce faire , j'ai fait ca :

Code :
  1. preg_match_all("/<a\ href=\"(.*)\">[.]*<\/a>/",$Data,$out, PREG_SET_ORDER) ;


$Data contient du code HTML obtenu par du file_get_conents()
Mais ca ne marque qu'a moitié :/
a chaque fois ca commence au bon endroit mais ca continue au dela du guillement final de href :/


Message édité par the_bigboo le 08-06-2006 à 13:22:19
n°1383696
afbilou
pouet your life
Posté le 08-06-2006 à 13:25:19  profilanswer
 

en pcre (je ne sais pas si c'est valable avec les expressions regulieres posix) tous les caracteres perdent leur specialité dans une definition de classe "[]" a l'exception de "]" et de "-".
 
Donc [.]* match une suite de point eventuellement nulle et non pas une suite de caractere car . a perdu sa fonction de caractere jocker.
 
Tu n'as pas non plus d'interet a despecialiser le caractere espace comme tu le fais "\ " ... ca ne sert a rien :s
 

Citation :

a chaque fois ca commence au bon endroit mais ca continue au dela du guillement final de href


C'est typiquement un cas ou tu vas avoir besoin que ton expression reguliere ne soit pas gourmande... et donc utiliser l'option U dans le masque de recherche.


Message édité par afbilou le 08-06-2006 à 13:35:14
n°1383699
afbilou
pouet your life
Posté le 08-06-2006 à 13:28:09  profilanswer
 

je rajouterais que le délimiteur de masque peut etre different du caractere "/". Si tu t'amuses a mettre comme délimiteur "#" par exemple ... tu n'es pas obligé de despécialiser le / de la balise a fermante qui se trouve en fin de masque.

n°1383782
the_bigboo
Posté le 08-06-2006 à 14:31:26  profilanswer
 

bon , maintenant j'ai fait :

Code :
  1. preg_match_all("/<a\ href=\"(.*)\">.*<\/a>/",$Data,$out, PREG_SET_ORDER) ;


et voici ce que j'obtiens pour hardware.fr :sweat:
http://img142.imageshack.us/img142/3975/htf2sp.th.jpg
 
....

n°1383801
anapajari
s/travail/glanding on hfr/gs;
Posté le 08-06-2006 à 14:50:14  profilanswer
 

afbilou s'est donné la peine de t'expliquer tout le concept de greedy, accompagné d'exemple plus que parlant, tu aurais au moins pu te donner la peine de le lire... Tu aurais déjà la solution à ton problème [:spamafote]

n°1383829
the_bigboo
Posté le 08-06-2006 à 15:20:13  profilanswer
 

anapajari a écrit :

afbilou s'est donné la peine de t'expliquer tout le concept de greedy, accompagné d'exemple plus que parlant, tu aurais au moins pu te donner la peine de le lire... Tu aurais déjà la solution à ton problème [:spamafote]


je comprends bien, mais ceci ne marche pas non plus :

Code :
  1. preg_match_all("#<a\ href=\"(.*)\">.*</a>#",$Data,$out, PREG_SET_ORDER) ;


quant au masque je n'ai pas tout compris :/ [:spamafote]

n°1383833
the_bigboo
Posté le 08-06-2006 à 15:26:12  profilanswer
 

toutes mes excuses :) je n'avais pas vu le post plus haut :/
j'ai donc fait :

Code :
  1. preg_match_all("#<a href=\"(.*)\">#U",$Data,$out, PREG_SET_ORDER) ;


mais j'ai encore des incohérences du genre :
http://img65.imageshack.us/img65/2272/htf6od.th.jpg

n°1383843
anapajari
s/travail/glanding on hfr/gs;
Posté le 08-06-2006 à 15:34:47  profilanswer
 

normal ta fin de regex c'est une double quote suivi de '>' et dans les exemple que tu surlignes le motif que tu cherches ne correspond pas [:spamafote]

#<a href=(['|"])(.*)\1#U


cela devrait marcher comme tu le désire

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  suppression du code javascript dans la source HTML

 

Sujets relatifs
Fonction JS dans formulaire htmlmenu vertical CSS javascript
Fonction mail avec un if else tout bête et javascript confirm()suppression d'une chaîne de caractères entre []
un code pour calculer le minimum des donnés d'un tableauprobleme javascript
[Javascript] pb pour recupérer une valeur (radiobutton)Code javascript pour mot de passe.
[ PHP || javascript ] le plus securisé 
Plus de sujets relatifs à : suppression du code javascript dans la source HTML


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR