utf8_decode htmlspecialchars_decode html_entity_decode especiales convertir caracteres aacute php character-encoding special-characters

htmlspecialchars_decode - php string to html tags



Cómo convertir entidades HTML como – a sus equivalentes de caracteres? (5)

Estoy creando un archivo que se guardará en la computadora de un usuario local (no se representa en un navegador web).

Actualmente estoy usando html_entity_decode , pero esto no está convirtiendo caracteres como – (que es el n-tablero) y se preguntaba qué otra función debería usar.

Por ejemplo, cuando el archivo se importa en el software, en lugar del ndash o simplemente a, aparece como – . Sé que podría usar str_replace , pero si está sucediendo con este personaje, podría suceder con muchos otros ya que los datos son dinámicos.


Codifique el archivo como UTF-8 usando utf8_encode() . Entonces no tienes que reemplazar / eliminar nada.


¿Estás tratando de convertir los personajes en Entidades HTML para su almacenamiento y posterior recuperación?

htmlentities(''–'', ENT_COMPAT, ''UTF-8''); // Returns "–"

Si he leído mal tu pregunta, házmelo saber.


Debe definir el conjunto de caracteres objetivo. – no es un carácter válido en el conjunto de caracteres predeterminado ISO-8859-1, por lo que no se decodifica. Defina UTF-8 como el juego de caracteres de salida y decodificará:

echo html_entity_decode(''–'', ENT_NOQUOTES, ''UTF-8'');

Si es posible, primero debe evitar las entidades HTML. No sé de dónde provienen los datos codificados, pero si lo está almacenando así en la base de datos o en otro lugar, lo está haciendo mal. Guarde siempre los datos codificados en UTF-8 y solo conviértelos a entidades HTML o de lo contrario escapé para obtener resultados cuando sea necesario.


Pruebe mb_convert_encoding() :

$string = "n–dash"; $output = mb_convert_encoding($string, ''UTF-8'', ''HTML-ENTITIES''); echo $output;


ACTUALIZAR

function decode_characters($data) { $text = $data; $enc = mb_detect_encoding($text, "UTF-8,ISO-8859-1"); $resutl_characters = iconv($enc, "UTF-8", $text); return $resutl_characters; }