propiedades ejemplo bootstrap html decoding html-entities

ejemplo - textarea no resizable html



Cómo evitar que un HTML TEXTAREA decodifique entidades html (6)

Debes estar seguro de que esto se representa en el navegador:

<textarea name="somename">&amp;lt;div</textarea>

Esencialmente, esto significa que el & in &lt; tiene que ser html codificado a &amp; . Cómo hacerlo dependerá de las tecnologías que estés usando.

ACTUALIZACIÓN : Piénsalo así. Si desea mostrar <div> dentro de un área de texto, deberá codificar <> porque, de lo contrario, <div> sería un elemento HTML normal para el navegador:

<textarea name="somename">&lt;div&gt;</textarea>

Dicho esto, si desea mostrar &lt;div&gt; dentro de un área de texto, tendrás que codificar & nuevamente, porque el navegador decodifica las entidades HTML al renderizar HTML. No tiene nada que ver con tu base de datos.

Tengo un problema extraño:

En la base de datos, tengo un signo ampersand literal punto y coma:

&lt;div

cada vez que se imprime en una etiqueta html textarea, el código fuente de la página muestra el &gt; como > .

¿Cómo paro esta decodificación?


En PHP, esto se puede hacer usando htmlentities (). Ejemplo a continuación.

<?php $content = "This string contains the TM symbol: &trade;"; print "<textarea>". htmlentities($content) ."</textarea>"; ?>

Sin htmlentities (), el área de texto interpretaría y mostraría el símbolo TM (™) en lugar de "& trade;".

http://php.net/manual/en/function.htmlentities.php


Encontré una solución alternativa para leer y trabajar con el navegador, simplemente lea el texto del elemento () usando jQuery, devuelve los caracteres como caracteres de visualización y me permite escribir desde un área de texto al interior de HTML de una división usando la propiedad a través de html () ...


No puede evitar que las entidades se decodifiquen en un área de texto [1] ya que el contenido de un área de texto no es (a diferencia de un script o elemento de estilo) CDATA intrínseco, aunque la recuperación de errores a veces puede dar la impresión de que lo es.

La definición del elemento textarea es:

<!ELEMENT TEXTAREA - - (#PCDATA) -- multi-line text field -->

es decir, contiene PCDATA que se describe como :

Texto del documento (indicado por la construcción SGML "#PCDATA"). El texto puede contener referencias de caracteres. Recuerde que estos comienzan con & y terminan con un punto y coma (p. Ej., Herg&eacute;''s adventures of Tintin contienen la referencia de entidad de carácter para el carácter agudo ).

Esto significa que cuando escribe (el HTML no válido de) "inicio de etiqueta" ( < ) el navegador lo corrige a "menos de signo" ( &lt; ) pero cuando escribe "inicio de entidad" ( & ), que está permitido , no se realiza corrección de errores.

Necesitas escribir lo que quieres decir. Si desea incluir algún HTML como datos, debe convertir cualquier carácter con un significado especial a su respectiva referencia de caracteres.

Si los datos son:

&lt;div

Entonces el HTML debe ser:

<textarea>&amp;lt;div</textarea>

Puede usar las funciones estándar para convertir esto (por ejemplo, htmlspecialchars de PHP o el módulo HTML :: Entities de Perl).

NB 1: Si estaba usando XHTML [2] (y realmente lo estaba usando, no cuenta si lo sirve como texto / html ), entonces podría usar un bloque CDATA explícito:

<textarea><![CDATA[&lt;div]]></textarea>

NB 2: O si los navegadores implementaron HTML 4 correctamente

Ok, pero la pregunta es. ¿Por qué los decodifica de todos modos? Suponiendo que haya agregado &, guardar el área de texto, se guardará & lt; , pero mostrado como <, guardándolo de nuevo lo convertirá de nuevo a <(pero permanecerá <en la base de datos), guardándolo de nuevo lo guardará a <en la base de datos, ¿por qué el área de texto lo decodifica?

  • El servidor envía (al navegador) los datos codificados como HTML .
  • El navegador envía (al servidor) los datos codificados como application / x-www-form-urlencoded (o multipart / form-data).

Como el navegador no envía los datos como HTML, los caracteres no se representan como entidades HTML.

Si toma los datos recibidos del cliente y luego los coloca en un documento HTML, primero debe codificarlos como HTML.



Tuve el mismo problema y acabo de hacer dos reemplazos en el texto para mostrar desde la base de datos antes de dejarlo en el área de texto:

myString = Replace(myString, "&", "&amp;") myString = Replace(myString, "<", "&lt;")

Reemplace n: o 1 para engañar al área de texto para que muestre los códigos. reemplace n: o 2: sin este reemplazo no puede mostrar la palabra "" dentro del área de texto (terminaría la etiqueta de área de texto).

(El código Asp / vbscript anterior, se traduce a un método de reemplazo de su elección de idioma)