Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/03/2014, 14:03
lucasgabmoreno
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
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("&lt;","&gt;","&quot;"),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("&lt;","&gt;","&quot;"),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);