Accueil > > > FILTRE POUR NEWSLETTERS GMAIL
FILTRE POUR NEWSLETTERS GMAIL
Information sur la source
Description
Voici un nouveau code qui rend compatible une newsletters html à gmail. Et oui car comme tous le monde sait, ou pas :D le webmail gmail n'aime pas parmis plein de chose le css. Il veut que des balises styles, donc le code remplace les balises class par style et met tous les paramètres des cc dans la balise style. J'espere j'explique pas trop mal. La fonction main est filtrage qui prend en paramètre une chaine de caractère contenant la newsletters.
Source
- <?
-
- $coco = filtrage($string);
- echo $coco;
-
- function search_name_class($class)
- {
- $long = strlen($class);
- $i = 0;
- if ($class[$i] == "\"")
- {
- $i++;
- while ($i < $long)
- {
- if ($class[$i] == "\"")
- {
- $i--;
- break;
- }
- $i++;
- }
- return(substr($class, 1, $i));
- }
- return(NULL);
- }
-
- function isclass($newsletter, $i)
- {
- global $globu; $tmp=substr($newsletter,$i,6);
- if ($tmp == "class=" || $tmp == "CLASS=")
- {
- $class = substr($newsletter, $i + 6);
- return (search_name_class($class));
- }
- return (0);
- }
-
- function check_end_balise($tmp, $balise)
- {
- $i = 0;
- $long = strlen($tmp);
- if ($tmp[0] == '/')
- $i++;
- while ($i < $long && $tmp[$i] != '\t' && $tmp[$i] != ' ')
- $i++;
- if ($tmp[0] == '/')
- $bal = substr($tmp, 1, $i);
- else
- $bal = substr($tmp, 0, $i);
- $sav = $i;
- while ($i < $long)
- {
- if (($class = isclass($tmp, $i)))
- break;
- $i++;
- }
- if ($tmp[0] == '/')
- {
- $i = 0;
- while ($balise[$i])
- {
- $check_bal = substr($balise[$i], 0, strlen($bal));
- if ($check_bal === $bal)
- $balise[$i] = "None";
- $i++;
- }
- }
- else
- $balise[] = $bal . ' ' . $class;
- return ($balise);
- }
-
- function check_balise($newsletter, $i, $balise)
- {
- $i++;
- $j = $i;
- $long = strlen($newsletter);
-
- while ($i < $long && $newsletter[$i] != '>')
- $i++;
- $tmp = substr($newsletter, $j, $i - $j);
- $balise = check_end_balise($tmp, $balise);
- return ($balise);
- }
- function filtrage($newsletter)
- {
- $letter = $newsletter;
- $i = 0;
- $long = strlen($newsletter);
- while ($i < $long)
- {
- if (($class = isclass($newsletter, $i))) {
- $letter = replace_css($newsletter, $i, $class, $letter);
- }
- $i++;
- }
- return ($letter);
- }
-
- function search_div($div, $class)
- {
- $long = strlen($div);
- $i = 0;
- while ($i < $long && $div[$i] != '{')
- $i++;
- $i++;
- $j = 0;
- while ($j < $long && $div[$j] != '}')
- $j++;
- $div = substr($div, $i, $j - $i);
- return ($div);
- }
-
- function search_sub_div($div, $i, $class)
- {
- $long = strlen($div);
- while ($i < $long && $div[$i] != '{')
- $i++;
- $i++;
- $j = 0;
- while ($j < $long && $div[$j] != '}')
- $j++;
- $div = substr($div, $i, $j - $i);
- return ($div);
- }
- function is_div_class($newsletter, $i, $class)
- {
- if ($newsletter[$i] == ".")
- {
- $div = substr($newsletter, $i + 1);
- $j = 0;
- $long = strlen($div);
- while ($j < $long)
- {
- if ($div[$j] == " " || $div[$j] == '\t' || $div[$j] == '{')
- break;
- $j++;
- }
- $i = $j;
- while ($i < $long && $div[$i] != '{')
- {
- if ($div[$i] != " " && $div[$i] != '\t')
- {
- if ($class == substr($div, $i, $i - $j))
- return (search_sub_div($div, $i, $class));
- else
- return (NULL);
- }
- $i++;
- }
- if ($class == substr($div, 0, $j))
- return (search_div($div, $class));
- return (NULL);
- }
- return (NULL);
- }
-
- function css_exist($newsletter, $class)
- {
- $long = strlen($newsletter);
- $i = 0;
- while ($i < $long)
- {
- if (($div = is_div_class($newsletter, $i, $class)))
- {
- return ($div);
- }
- $i++;
- }
- return (NULL);
- }
-
- function replace_css($newsletter, $i, $class, $letter)
- {
- if (($div = css_exist($newsletter, $class)))
- {
- $div = 'style="' . $div . '"';
- $tmp = 'class="' . $class . '"';
- $letter = eregi_replace($tmp, $div, $letter);
- }
- return ($letter);
- }
- ?>
-
-
<?
$coco = filtrage($string);
echo $coco;
function search_name_class($class)
{
$long = strlen($class);
$i = 0;
if ($class[$i] == "\"")
{
$i++;
while ($i < $long)
{
if ($class[$i] == "\"")
{
$i--;
break;
}
$i++;
}
return(substr($class, 1, $i));
}
return(NULL);
}
function isclass($newsletter, $i)
{
global $globu; $tmp=substr($newsletter,$i,6);
if ($tmp == "class=" || $tmp == "CLASS=")
{
$class = substr($newsletter, $i + 6);
return (search_name_class($class));
}
return (0);
}
function check_end_balise($tmp, $balise)
{
$i = 0;
$long = strlen($tmp);
if ($tmp[0] == '/')
$i++;
while ($i < $long && $tmp[$i] != '\t' && $tmp[$i] != ' ')
$i++;
if ($tmp[0] == '/')
$bal = substr($tmp, 1, $i);
else
$bal = substr($tmp, 0, $i);
$sav = $i;
while ($i < $long)
{
if (($class = isclass($tmp, $i)))
break;
$i++;
}
if ($tmp[0] == '/')
{
$i = 0;
while ($balise[$i])
{
$check_bal = substr($balise[$i], 0, strlen($bal));
if ($check_bal === $bal)
$balise[$i] = "None";
$i++;
}
}
else
$balise[] = $bal . ' ' . $class;
return ($balise);
}
function check_balise($newsletter, $i, $balise)
{
$i++;
$j = $i;
$long = strlen($newsletter);
while ($i < $long && $newsletter[$i] != '>')
$i++;
$tmp = substr($newsletter, $j, $i - $j);
$balise = check_end_balise($tmp, $balise);
return ($balise);
}
function filtrage($newsletter)
{
$letter = $newsletter;
$i = 0;
$long = strlen($newsletter);
while ($i < $long)
{
if (($class = isclass($newsletter, $i))) {
$letter = replace_css($newsletter, $i, $class, $letter);
}
$i++;
}
return ($letter);
}
function search_div($div, $class)
{
$long = strlen($div);
$i = 0;
while ($i < $long && $div[$i] != '{')
$i++;
$i++;
$j = 0;
while ($j < $long && $div[$j] != '}')
$j++;
$div = substr($div, $i, $j - $i);
return ($div);
}
function search_sub_div($div, $i, $class)
{
$long = strlen($div);
while ($i < $long && $div[$i] != '{')
$i++;
$i++;
$j = 0;
while ($j < $long && $div[$j] != '}')
$j++;
$div = substr($div, $i, $j - $i);
return ($div);
}
function is_div_class($newsletter, $i, $class)
{
if ($newsletter[$i] == ".")
{
$div = substr($newsletter, $i + 1);
$j = 0;
$long = strlen($div);
while ($j < $long)
{
if ($div[$j] == " " || $div[$j] == '\t' || $div[$j] == '{')
break;
$j++;
}
$i = $j;
while ($i < $long && $div[$i] != '{')
{
if ($div[$i] != " " && $div[$i] != '\t')
{
if ($class == substr($div, $i, $i - $j))
return (search_sub_div($div, $i, $class));
else
return (NULL);
}
$i++;
}
if ($class == substr($div, 0, $j))
return (search_div($div, $class));
return (NULL);
}
return (NULL);
}
function css_exist($newsletter, $class)
{
$long = strlen($newsletter);
$i = 0;
while ($i < $long)
{
if (($div = is_div_class($newsletter, $i, $class)))
{
return ($div);
}
$i++;
}
return (NULL);
}
function replace_css($newsletter, $i, $class, $letter)
{
if (($div = css_exist($newsletter, $class)))
{
$div = 'style="' . $div . '"';
$tmp = 'class="' . $class . '"';
$letter = eregi_replace($tmp, $div, $letter);
}
return ($letter);
}
?>
Conclusion
Voila excusez moi pour les deux fonctions de plus de 25 lignes. J'espere que ce code pourra vous être utile.
Historique
- 11 août 2008 15:38:15 :
- précision de newsletters html
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Iframe [ par saad123 ]
Salut je voudrais savoir comment je pourrai remplacer la balise iframe par une autre balise equivalente parceque celle pose probleme avec certain navi
balise, cache :( [ par elanspeech ]
Bonjour,J'utilise la balise suivante :<embed src="fichier.wav" width=145 height=25 autostart="false" cache="false" controls="controlpanel">fichi
lien dans une balise textaera [ par ludlu ]
je n'arrive pas a afficher un lien dans une balise de type textaera. voici mon code:$Mesure_effectue="<a href=\"Choix_freq1.php\">Select * from
Parsing et performances ... [ par guiguimac ]
bonjour,je viens de reprendre un site web tout en php. son principe est le suivant : les pages html sont préparée sous formes de template que le code
parsing error !?! [ par Arkko ]
c cmt qu'on fait pour pas avoir cet erreur lol Parse error: parse error, unexpected $end in debug.php on line 71
newsletter php : probleme envoi mail hml [ par allowen ]
bonjour, j'ai fait une newsletter en php mais lorsque j'envoie un mail seul une personne reçoit le contenu, les autres recevant seulement le lien de
Newsletter [ par citt ]
Slt !!!!!je ne mi connait pas du tout en php mais en vb oui je voudrait creé une page de newsletter ou ca enrengistre les donné dans une base access.H
balise <noscript> en php ??? [ par pyranhaz ]
Bonjour,existe-il une façon efficace en php de rediriger tout visiteur automatiquement qui n'a pas le "active scripting" d'activé sur sa machine ???il
PHP / NuSOAP : Xml parsing error [ par pete87150 ]
Bonjour,J'ai créé un service web tout simple pour tester : [WebService(Description="Bienvenue sur le service Web de démo",Namespace="WordGeneration")]
Transmission de caractere accentue avec la balise <meta> en PHP [ par yandre100 ]
Salut Tout le monde. J'ai des problemes a transmettre des caracteres accentues en Php. J'utillise pour cela la balise meta comme ceci:<meta http-eq
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|