2008-10-12 5 views
5

En un sitio de la mina en la que se utiliza un área de texto para su presentación, que tienen código que puede aparecer algo en la línea de lo siguiente:XHTML y el interior de las áreas de texto

<textarea><p>text</p></textarea> 

Al validar (XHTML 1.0 Transicional) , aparece este error,

line 88 column 50 - Error: document type does not allow element "p" here 

Si este no es un método válido, entonces ¿qué se espera? Podría hacer una solución con un evento de JavaScript de carga, pero parece innecesario. Independientemente de esto, esto no afecta el resultado, pero preferiría que mi sitio valide.

Respuesta

8

¿Hay algún motivo por el que intente poner <p> dentro de <textarea>? como descubriste, no es válido. si es para fines de visualización (es decir, mostrando el código) que debe ser traducido:

<textarea>&lt;p&gt;text&lt;/p&gt;</textarea> 

allá de problemas de validación, permitiendo que las etiquetas arbitrarias (que no son codificados adecuadamente como arriba) para mostrar puede ser un problema de seguridad enorme. es fundamental asegurarse de que cualquier entrada suministrada por el usuario se haya desinfectado correctamente antes de que se muestre.

+0

Por alguna razón yo estaba pensando entidades HTML no se mostrará en el área de texto (muda). La conversión de las entidades HTML a los personajes, luego todos ellos parecen tener que hacerlo :) –

0

Puede omitir las etiquetas en el área de texto, y cuando necesite nuevas líneas use \ n De lo contrario, use &lt;p&gt; y &lt;/p&gt; en el lugar de sus etiquetas.

0

Puede usar una función de carga para reemplazar las etiquetas de inicio y fin del contenido de texto de texto.

eg: replace < > with &lt; &gt; 

<textarea cols="" rows="">&lt;p&gt;text&lt;/p&gt;</textarea> 

<p> texto </p >

1

Estoy en lo cierto al pensar que su tratando de hacer que un editor WYSIWYG, como TinyMCE? Lo que más parece hacer es usar entidades HTML en el textarea y convertirlo a HTML a través de JavaScript.

3

¿Una sección de CDATA sería una opción para usted?

<textarea><![CDATA[ 
    <p>Blah</p> 
]]></textarea> 
0

usted podría utilizar esta función en los datos publicados

function clean_data($value) { 
    if (get_magic_quotes_gpc()) { $value = stripslashes($value); } 
    $value = addslashes(htmlentities(trim($value))); 
    $value = str_replace("\'", "&#39;", $value); 
    $value = str_replace("'", "&#39;", $value); 
    $value = str_replace(":", "&#58;", $value); 
    return $value; 
} 
Cuestiones relacionadas