TRANSFORMER DU TEXTE OU DE L'HTML EN TEXTE CONFORME À LA NORME D'ENVOI D'EMAIL R

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 13 févr. 2010 à 09:20
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012 - 15 févr. 2010 à 09:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51286-transformer-du-texte-ou-de-l-html-en-texte-conforme-a-la-norme-d-envoi-d-email-rfc2045-quoted-printable

cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
15 févr. 2010 à 09:25
merci pour cette fonction bien pratique, je compte l'utiliser dans un module de newsletter
winwarrior Messages postés 654 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 10 février 2009 1
13 févr. 2010 à 13:01
Sinon (pour rappel) il y a les fonctions :
- imap_8bit (nécessite l'extension imap activée)
- quoted_printable_encode (nécessite php 5.3)

Niveau code j'ai quelques remarques à faire, il vaut mieux utiliser les fonctions preg_* plutot que ereg_* qui sont maintenant dépreciées et
for ($j = 0; $j <= strlen($str) - 1; $j++)
devientfor ($j 0, $k strlen($str); $j < $k; $j++)
ça évitera de recalculer la taille de $str à chaque itération
je chipote mais il y a aussi
substr ( $str, $j, 1 )
qui pourrait devenir
$str[$j]
"strtoupper ( sprintf("%02X", $ascii ) )", le strtoupper est inutile comme X veut déjà dire qu'on veut le résultat en majuscule
et une dernière chose
substr($line,73,strlen($line))
devient
substr($line,73)
la fonction substr, si tu spécifie pas de 3ème argument prend automatiquement la longueur totale de la chaine

voilà ça sera tout :-)
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
13 févr. 2010 à 09:20
Mouais...
Quelques suggestions ou remarques :
1 - simplification du code :
Les tableaux $arrayaccent, $arraysansaccent et l'appel de la fonction str_replace($arrayaccent, $arraysansaccent, $str) sont inutiles. Un appel à la fonction native htmlentities fera l'affaire et sera nettement plus performant.

2 - Ce code ne supporte pas l'unicode comme ici :
$char = substr ( $str, $j, 1 );
puisque certains caractères (accentués, etc.) sont encodés sur 2 caractères et non 1.

Sinon, merci de nous avoir rappelé l'existence de la RFC-2045. :)
Rejoignez-nous