supprimer un bout de code lors d'une inclusion

supprimer un bout de code lors d'une inclusion - PHP - Programmation

Marsh Posté le 22-02-2008 à 23:17:33    

Bonjour,
 
j'ai deux pages php, la mienne et une autre externe, je souhaite inclure la page externe dans ma page via la fonction include(), pour eviter que la page une fois compilé ne possede des declaration en double (DOCTYPE style head etc) je souhaite supprimer au vol dans la page incluse avec la fonction preg_replace.
mais quand je tape mon code rien n'est modifié la page compilé affiche tout :(
 
voici ce que j'ai mis dans ma page:

Code :
  1. modif("adresse de la page a inclure" );


 
dont voici la fonction:  

Code :
  1. function modif($loc) {
  2. ob_start();
  3. include $loc;
  4. $chaine = ob_get_contents() ;
  5. ob_end_clean();
  6. $suppr = array( "/style/" , "/\/style/" ) ; << j'ai change souvent ici
  7. $chaine = preg_replace($suppr,'',$chaine);
  8. return $chaine;
  9. }
  10. ?>


 
je precise que le bout de  code que je veu supprimer c'est de "<!DOCTYPE" à "</style>" compris
 
est ce quelqu'un aurait une idee ? ^^ car je suis dans la mouise :p
j'ai essaye pas mal de chose avec les expression regulière sans succes, la seule chose positive c'est que le bout de code inclue s'affiche integralement ^^

Reply

Marsh Posté le 22-02-2008 à 23:17:33   

Reply

Marsh Posté le 23-02-2008 à 00:13:36    

inclure une page externe, c'est la porte ouverte au piratage.
Imagine quelqu'un de mal intentionné qui fait un include sur une page externe de son choix et qui contient du code malicieux, tu seras vraiment dans la mouise  ;)

Reply

Marsh Posté le 23-02-2008 à 14:30:51    

vivi je sais mais c'est la le soucis ^^ je fais ca avec des pages qui sont sur plusieurs domaine m'appartenant :) et la page que j'inclue dois etre egalement autonome ^^
 
sinon pas d'idee ? :) je sens que le soucis c'est les expressions reguliere mais au vu de ce qui traine sur le net je trouve pas d'explicatif clair (celui de php.net ne fonction pas par exemple si je tape

Code :
  1. $suppr = ( "<!DOCTYPE(.*)</style>" );

ca marche pas :)
 
ca a l'air plustot quelque chose chose comme

Code :
  1. "/\<!DOCTYPE(.+*)\<\/style\>/"

mais ca non plus ne marche pas ^^


Message édité par aloade le 23-02-2008 à 14:32:11
Reply

Marsh Posté le 23-02-2008 à 16:47:23    

Le . ne match par les retours à la ligne par défaut.
http://fr.php.net/manual/fr/refere [...] ifiers.php
 
Et comme ça je dirais qu'il ne faut conserver que ce qui se trouve entre les balise <body> et </body>.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 23-02-2008 à 19:36:09    

ah merci pour la page je vais la garder dans un coin :) dans la meme idee tu aurai pas une page parlant des expressions regulieres ? (compatible avea preg_replace bien entendu ^^)

 

sinon j'ai reussi a faire fonctionner le truc en tapant

Code :
  1. $chaine = preg_replace("(<!DOCTYPE(.+?)</style> )is" , '' , $chaine );
 

vu que ca marche je vais en profiter pour virer plusieurs elements en simultané, comment je dois m'y prendre pour faire ca ? :p


Message édité par aloade le 23-02-2008 à 19:36:43
Reply

Marsh Posté le 24-02-2008 à 00:34:49    

Bah... Syntaxe des masques selon la doc PHP :
http://fr.php.net/manual/fr/refere [...] syntax.php
Calqué sur le modèle perl si mes souvenirs sont bons.
 
Sinon en français ya pas mal d'infos sur les regex ici :
http://www.expreg.com/
 
Après ya google....


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 24-02-2008 à 01:49:30    

Et c'est là que d'utiliser un point d'entrée unique et éventuellement un framework identique faciliterait les choses ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed