Respuesta: Problemas con Yahoo!, htmlentities(), caracteres especiales y PHPMailer Ahora si... la "maña" Cita: function html_txt($a){
$b64 = explode('src="',$a);
$b64_db = array();
for($i = 1 ; $i < count($b64) ; $i++){
$b64_2 = explode('"',$b64[$i]);
$b64_add = $b64_2[0];
$b64_db[] = $b64_add;
}
for($i = 0 ; $i < count($b64_db) ; $i++){
$a = str_replace($b64_db[$i],"html_txt_base64_replace_".$i,$a);
}
$a = htmlentities($a, ENT_COMPAT, 'UTF-8');
$a = str_replace(array("<",">","""),array("< ",">","\""),$a);
for($i = 0 ; $i < count($b64_db) ; $i++){
$a = str_replace("html_txt_base64_replace_".$i,$b64_db[$i],$a);
}
return $a;
}; El código completo quedaría: Cita: $html = "<div>Estoy en HTML</div>";
$nohtml = "No estoy en HTML :(";
function html_txt($a){
$b64 = explode('src="',$a);
$b64_db = array();
for($i = 1 ; $i < count($b64) ; $i++){
$b64_2 = explode('"',$b64[$i]);
$b64_add = $b64_2[0];
$b64_db[] = $b64_add;
}
for($i = 0 ; $i < count($b64_db) ; $i++){
$a = str_replace($b64_db[$i],"html_txt_base64_replace_".$i,$a);
}
$a = htmlentities($a, ENT_COMPAT, 'UTF-8');
$a = str_replace(array("<",">","""),array("< ",">","\""),$a);
for($i = 0 ; $i < count($b64_db) ; $i++){
$a = str_replace("html_txt_base64_replace_".$i,$b64_db[$i],$a);
}
return $a;
};
function nohtml_txt($a){
// convertir caracteres para evitar incompatibilidad
$especial = array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä','é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë','í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î','ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô','ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü','ç', 'Ç');
$limpio = array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a','e', 'e', 'e', 'e', 'e', 'e', 'e', 'e','i', 'i', 'i', 'i', 'i', 'i', 'i', 'i','o', 'o', 'o', 'o', 'o', 'o', 'o', 'o','u', 'u', 'u', 'u', 'u', 'u', 'u', 'u','c', 'c');
$a = str_replace($especial,$limpio,$a);
$a = str_replace(array("\\", "º","¡","¿", "¨", "´"),'',$a);
$a = str_replace("·",'-',$a);
return $a;
};
$mail->Body = html_txt($html);
$mail->AltBody = nohtml_txt($nohtml);
|