textareas中的XHTML和代码

时间:2008-10-12 21:12:56

标签: validation xhtml

在我的网站上使用textarea提交,我的代码可能会出现以下内容:

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

验证时(XHTML 1.0 Transitional),会出现此错误,

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

如果这不是一个有效的方法,那么预期的是什么?我可以使用onload JavaScript事件做一个解决方法,但这似乎是不必要的。无论这不会影响输出,但我宁愿我的网站验证。

6 个答案:

答案 0 :(得分:8)

您是否有理由将<p>置于<textarea>之内?你发现它无效。如果它是用于显示目的(即显示代码),它应该被翻译:

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

超出验证问题,允许显示任意标签(如上所述未正确编码)可能是一个巨大的安全问题。确保任何用户提供的输入在显示之前已经过适当的清理是至关重要的。

答案 1 :(得分:3)

CDATA部分可以作为您的选择吗?

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

答案 2 :(得分:1)

我是否正确地想要你想要制作一个WYSIWYG编辑器,比如TinyMCE?最似乎做的是使用textarea中的HTML实体,并通过JavaScript将其转换为HTML。

答案 3 :(得分:0)

您可以在文本区域中省略标记,当您需要新行时,请使用\ n否则请在代码位置使用&lt;p&gt;&lt;/p&gt;

答案 4 :(得分:0)

您可以使用onload函数替换textarea内容的开始和结束标记。

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

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

&LT; p为H.文字&lt; / p为H.

答案 5 :(得分:0)

您可以在发布的数据上使用此功能

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