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;
}