/**universal * Encoder une chaine compatible "ENCODING=QUOTED-PRINTABLE" - cette chaine est décodable avec la fonction "quoted_printable_decode()" * ex: quoted_printable_encode(ut8_encode("c'est quand l'été ?")) -> "c'est quand l'=C3=A9t=C3=A9 ?" * * @author Thomas Pequet / Memotoo.com * @version 1.1 * @param string:string Chaine * @return Chaine encodée */ function quoted_printable_encode($string) { // Fonction qui ajoute au tableau de valeurs un "=" devant if (!function_exists("array_values_quoted_printable")) { function array_values_quoted_printable($tab) { $tabValues = array_values($tab); for ($i=0;$i "09", "\n" => "0A", "\r" => "0D", // " " => "20", "\xA0" => "A0", "¡" => "A1", "¢" => "A2", "£" => "A3", "¤" => "A4", "¥" => "A5", "¦" => "A6", "§" => "A7", "¨" => "A8", "©" => "A9", "ª" => "AA", "«" => "AB", "¬" => "AC", "®" => "AE", "¯" => "AF", "°" => "B0", "±" => "B1", "²" => "B2", "³" => "B3", "´" => "B4", "µ" => "B5", "¶" => "B6", "·" => "B7", "¸" => "B8", "¹" => "B9", "º" => "BA", "»" => "BB", "¼" => "BC", "½" => "BD", "¾" => "BE", "¿" => "BF", "À" => "C0", "Á" => "C1", "Â" => "C2", "Ã" => "C3", "Ä" => "C4", "Å" => "C5", "Æ" => "C6", "Ç" => "C7", "È" => "C8", "É" => "C9", "Ê" => "CA", "Ë" => "CB", "Ì" => "CC", "Í" => "CD", "Î" => "CE", "Ï" => "CF", "Ð" => "D0", "Ñ" => "D1", "Ò" => "D2", "Ó" => "D3", "Ô" => "D4", "Õ" => "D5", "Ö" => "D6", "×" => "D7", "Ø" => "D8", "Ù" => "D9", "Ú" => "DA", "Û" => "DB", "Ü" => "DC", "Ý" => "DD", "Þ" => "DE", "ß" => "DF", "à" => "E0", "á" => "E1", "â" => "E2", "ã" => "E3", "ä" => "E4", "å" => "E5", "æ" => "E6", "ç" => "E7", "è" => "E8", "é" => "E9", "ê" => "EA", "ë" => "EB", "ì" => "EC", "í" => "ED", "î" => "EE", "ï" => "EF", "ð" => "F0", "ñ" => "F1", "ò" => "F2", "ó" => "F3", "ô" => "F4", "õ" => "F5", "ö" => "F6", "÷" => "F7", "ø" => "F8", "ù" => "F9", "ú" => "FA", "û" => "FB", "ü" => "FC", "ý" => "FD", "þ" => "FE", "ÿ" => "FF", ); // Cas particulier -> remplacer tous les "=" en premier $string = str_replace("=", "=3D", $string); // Cas particulier de l'uft8 -> encodé en "quoted_printable" le caractère après "À", "Á", "Â", "Ã", "Ä", "Å" pour gérer tous les caractères autres que ceux ci-dessus (ex:"^" -> 0x88) $tailleTmp = strlen($string); $i = 0; while ($i<$tailleTmp) { if (($string[$i]=="À" || $string[$i]=="Á" || $string[$i]=="Â" || $string[$i]=="Ã" || $string[$i]=="Ä" || $string[$i]=="Å") && $i+1<$tailleTmp && $string[$i+1]!=" " && $string[$i+1]!="") { $strTmp = strtoupper(bin2hex($string[$i+1])); if (strlen($strTmp)==2) { // Décaler les caractères de 2 for ($j=$tailleTmp-1;$j>$i;$j--) { $string[$j+2] = $string[$j]; } // Remplacer par la valeur "quoted_printable" $string[$i+1] = "="; $string[$i+2] = $strTmp[0]; $string[$i+3] = $strTmp[1]; $i += 2; $tailleTmp += 2; } } $i++; } $string = str_replace(array_keys($tabStr), array_values_quoted_printable($tabStr), $string); return $string; }