Isoler un bout de code HTML dans une page PHP ?

Isoler un bout de code HTML dans une page PHP ? - PHP - Programmation

Marsh Posté le 23-05-2006 à 20:14:08    

J'ai une page PHP qui utilise des CSS pour son apparence.
Je récupère le code source d'un email (qui est en HTML) et je l'affiche dans cette page.
 
LE problème : beaucoup d'emails ont leur propres <style> donc quand j'affiche l'email dans ma page, il s'affiche bien comme il faut MAIS il me change tout le style de ma page entière en meme temps :(
 
exemple : ma page PHP a un fond rouge. j'affiche un email qui a un fond bleu dans son contenu. resultat => toute ma page se retrouve avec un fond bleu.
 
une idée pour isoler le code PHP de m'email pour ne pas qu'il empiete sur le style de ma propre page ? (sans faire de frames ou iframes)


Message édité par bab le 24-05-2006 à 09:00:35
Reply

Marsh Posté le 23-05-2006 à 20:14:08   

Reply

Marsh Posté le 23-05-2006 à 20:24:35    

Du code PHP dans un e-mail???

Reply

Marsh Posté le 23-05-2006 à 21:40:39    

oups, nan, je voulais dire du code HTML.
 
en gros, lutter contre toutes les balises qui ont du style dedans

Reply

Marsh Posté le 24-05-2006 à 09:00:52    

personne ?

Reply

Marsh Posté le 24-05-2006 à 09:04:22    

un lien ?

Reply

Marsh Posté le 24-05-2006 à 09:14:30    

je serait toi, je ferais une recherche de tout ce qui touche au css dans ton code source avec des regex (de php) puis je l'éliminerait simplement ...

Reply

Marsh Posté le 24-05-2006 à 09:14:48    

en gros la source est dans ce genre là :

Code :
  1. <HTML>
  2. <HEAD>definition de mon style a moi</HEAD>
  3. <BODY>
  4.     Voici le mail
  5.     <HTML>
  6.     <HEAD>definition du style du mail qui devient le style de la page complete</HEAD>
  7.     <BODY>
  8.            Contenu du mail
  9.     </BODY>
  10.     </HTML>
  11. </BODY>
  12. </HTML>


Message édité par bab le 24-05-2006 à 09:15:09
Reply

Marsh Posté le 24-05-2006 à 09:22:54    

pourquoi te contenter de virer le style de l'email ?
celui-ci te rajoute également des balises <body> qu'il ne faudrait pas, et aussi <html>...etc...
 
comme clem85, je te dirais de chercher du coté des regex, pour ne récupérer du mail, que ce qui se trouve entre les balise <body>de celui-ci (en gros, tu n'a besoin que du contenu du mail, et surtout pas du reste)


Message édité par Xav_ le 24-05-2006 à 09:23:21

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 24-05-2006 à 09:29:56    

exemple très simple, que tu doit modifier et paufiner afin d'arriver a ton resultat parfait:
 

Code :
  1. <?php
  2. $sFile = file_get_contents("url de ta page ou extraire ton code source", False, $cxContext);
  3. $pieces = explode("HEAD", $sFile);
  4. $piece = $pieces[0];
  5. $piece .= $pieces[2];
  6. $key = explode(" ", $piece);
  7. //$key est ta page html que tu a inclu plus haut dans les balises <head> ni </head>
  8. ?>


 
 :pt1cable:  Enjoy à toi maintenan d'adapter cela a ton gout  :hello:

Reply

Marsh Posté le 24-05-2006 à 09:35:59    

Bab > la solution est simple, tu affiche ton mail dans une <iframe>
 

Code :
  1. <HTML>
  2.       <HEAD>definition de mon style a moi</HEAD>
  3.       <BODY>
  4.          Voici le mail
  5.          <iframe>
  6.               <HTML>
  7.               <HEAD>definition du style du mail qui devient le style de la page complete</HEAD>
  8.               <BODY>
  9.                 Contenu du mail
  10.               </BODY>
  11.          </iframe>
  12.          </HTML>
  13.       </BODY>
  14.       </HTML>

Reply

Marsh Posté le 24-05-2006 à 09:35:59   

Reply

Marsh Posté le 24-05-2006 à 09:53:21    

je n,e pense pas que sa soit valide nemohp, cette personne veut que le css de SON site soit aussi appliqué au mail ... enfin si j'ai compris ..

Reply

Marsh Posté le 24-05-2006 à 12:13:34    

clem85 > non, tu n'as pas compris. Il est clairement expliqué dans son premier message qu' il veux que les DEUX styles soient distincts

Reply

Marsh Posté le 24-05-2006 à 12:27:36    

et il a aussi clairement édité son 1er post pour dire qu'il ne voulait pas de frame (ou iframe) ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 24-05-2006 à 12:29:58    

Xav_ a écrit :

et il a aussi clairement édité son 1er post pour dire qu'il ne voulait pas de frame (ou iframe) ;)


 
en effet désolé (pourtant c'était bien avec les IFRAMES  :D )
 

Reply

Marsh Posté le 24-05-2006 à 20:25:18    

oui, je voudrais garder les 2 styles distinctement et sans utiliser si possible des frame ou iframe
 
mais j'ai l'impression que c'est pas gagné ...

Reply

Marsh Posté le 24-05-2006 à 21:24:13    

ça ne fonctionne pas si tu mets une classe ou un id à ton body principal ?
C'est pour faire un client de messagerie ?
Regarde comment font les autres clients de messagerie.

Reply

Marsh Posté le 24-05-2006 à 21:26:04    

Sinon, pour le coup, j'aurais fait une iframe aussi.

Reply

Marsh Posté le 24-05-2006 à 22:43:19    

non, ça ne marche pas avec "class" dans le body car beaucoup de styles passent outre et s'appliquent à l'ensemble du naviguateur.
oui c'est pour faire un client de messagerie.
 
j'ai essayé une iframe
ça marche bien sauf pour un point :
pour décoder les emails, j'utilise une classe qui me retourne diverses choses comme par exemple le message (plutot indispensable  :D ) et également un tableau avecles fichiers joints  [:athlonxp2100+] . Or, ce tableau je peux le récuperer sans problème sans utiliser de iframe (logique, vu que c'est la meme page) alors qu'avec une iframe, les deux pages sont complétement indépendantes d'où pb.


Message édité par bab le 24-05-2006 à 22:46:53
Reply

Marsh Posté le 25-05-2006 à 08:41:22    

et si tu mets ton mail dans un div pwet et que tu remplaces body par pwet dans le style du mail ?(parce que visiblement c est ca qui casse ton propre style mais peut etre j ai rien compris)

Reply

Marsh Posté le 25-05-2006 à 16:12:03    

mIRROR a écrit :

et si tu mets ton mail dans un div pwet et que tu remplaces body par pwet dans le style du mail ?(parce que visiblement c est ca qui casse ton propre style mais peut etre j ai rien compris)


 
le truc c'est que je voudrais garder le style de chacun mais bien àsa place car si je remplace le style du mail, pour certains ça va mais d'autres deviennent pas bien du tout.

Reply

Marsh Posté le 25-05-2006 à 20:31:20    

mais tu gardes le style du mail  
 
peut etre je m explique mal aussi :/
tu ne changes que le nom le style ne change pas
 
faut juste que t injecte l interieur du body (parce que 2 <html> c est pas beau et ca doit pas etre valide) dans ta page pour garder une structure correcte de ton document

Reply

Marsh Posté le 25-05-2006 à 20:34:02    

Faut regarder ce qui se fait ailleurs : hotmail par exemple supprime toutes les balises style qu'il rencontre. Yahoo c'est pareil je crois.

Reply

Marsh Posté le 25-05-2006 à 22:40:42    

mIRROR a écrit :

mais tu gardes le style du mail  
 
peut etre je m explique mal aussi :/
tu ne changes que le nom le style ne change pas
 
faut juste que t injecte l interieur du body (parce que 2 <html> c est pas beau et ca doit pas etre valide) dans ta page pour garder une structure correcte de ton document


 
je ne vois pas vraiment ce que tu veux dire.
car peut importe les balises <html>,<body>,etc ..., certains styles (comme la modification de l'apparence des ascensseurs) modifie le naviguateur, quelque soit son emplacement dans la page

Reply

Marsh Posté le 25-05-2006 à 22:41:10    

FlorentG a écrit :

Faut regarder ce qui se fait ailleurs : hotmail par exemple supprime toutes les balises style qu'il rencontre. Yahoo c'est pareil je crois.


 
je crois que c'est ce que je vais finir par faire oui ...

Reply

Marsh Posté le 25-05-2006 à 23:02:15    

bab a écrit :

je ne vois pas vraiment ce que tu veux dire.
car peut importe les balises <html>,<body>,etc ..., certains styles (comme la modification de l'apparence des ascensseurs) modifie le naviguateur, quelque soit son emplacement dans la page


 
oui mais si l ascenceur est dans ton div ca salope pas ta propre css  
et puis je n y ai pas pensé parce qu officiellement c est pas tres valide comme code
(meme si je peux pas m empecher de le foutre sur tous mes sites :d)
mais en principe un style ne remonte pas ^^ tu le bloques dans ton div point barre :/

Reply

Marsh Posté le 26-05-2006 à 09:15:32    

mIRROR a écrit :

oui mais si l ascenceur est dans ton div ca salope pas ta propre css  
et puis je n y ai pas pensé parce qu officiellement c est pas tres valide comme code
(meme si je peux pas m empecher de le foutre sur tous mes sites :d)
mais en principe un style ne remonte pas ^^ tu le bloques dans ton div point barre :/


 
ça c'est ce que tu dis. moi j'ai fait l'essai et ça sort du div ...

Reply

Marsh Posté le 27-05-2006 à 21:06:20    

[:spamafote]
 
c est sur que si tu preferes laisser tomber c est pas moi qui vais y reflechir a ta place :/

Reply

Marsh Posté le 28-05-2006 à 01:43:23    

mIRROR a écrit :

[:spamafote]
 
c est sur que si tu preferes laisser tomber c est pas moi qui vais y reflechir a ta place :/


 
j'ai jamais dis ça sauf que c'est facile de dire que ça sort pas du div
j'ai essayé plein de trucs différents et certains style s'imposent en maitre, que ça soit en cloisonnant dans des div, table, etc ...

Reply

Marsh Posté le 29-05-2006 à 11:19:51    

mettre la partie html du mail dans un div ne suffira pas en effet.
 
Il va falloir que pour toutes les propriété de style défini pour le mail, tu rajoute "#nom_du_div" devant, donc ça va faire quand meme une moulinette avec pas mal de traitement pour garder les 2 styles dans une seul page (puisque pas de frames) sans que les 2 ne viennent se perturber l'un l'autre...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 30-05-2006 à 07:11:36    

Xav_ a écrit :

mettre la partie html du mail dans un div ne suffira pas en effet


 
la partie body [:aloy]
 

Xav_ a écrit :

Il va falloir que tu rajoute "#nom_du_div" devant


 
c est a ca que je pensais oui
 
EDIT :
great masta capelo made me do it :jap:

Message cité 1 fois
Message édité par mIRROR le 30-05-2006 à 07:21:03
Reply

Marsh Posté le 30-05-2006 à 09:41:28    

mIRROR a écrit :

la partie body


 
comment tu penses faire pour séparer la partie body uniquement ?


Message édité par bab le 30-05-2006 à 09:41:45
Reply

Marsh Posté le 31-05-2006 à 09:58:35    

une regex pour isoler ce qui se trouve entre <body> et </body>...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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