提问人:Elle H 提问时间:10/13/2008 更新时间:12/15/2008 访问量:3817
文本区域内的 XHTML 和代码
XHTML and code inside textareas
问:
在我的一个使用文本区域进行提交的网站上,我有代码可以显示如下内容:
<textarea><p>text</p></textarea>
验证 (XHTML 1.0 Transitional) 时,会出现此错误,
line 88 column 50 - Error: document type does not allow element "p" here
如果这不是一个有效的方法,那么预期是什么?我可以对 onload JavaScript 事件进行解决,但这似乎是不必要的。无论如何,这不会影响输出,但我宁愿我的网站进行验证。
答:
8赞
Owen
10/13/2008
#1
你试图把一个 in 是有原因的吗?正如你所发现的,它是无效的。如果用于显示目的(即显示代码),则应将其翻译为:<p>
<textarea>
<textarea><p>text</p></textarea>
除了验证问题之外,允许显示任意标签(未正确编码)可能是一个巨大的安全问题。最重要的是,要确保用户提供的任何输入在显示之前都经过适当的清理。
评论
0赞
Elle H
10/13/2008
出于某种原因,我认为 HTML 实体不会显示在 textarea 中(哑)。将 HTML 实体转换为字符,然后它们似乎都已完成:)
0赞
acrosman
10/13/2008
#2
您可以省略文本区域中的标签,当需要新行时,请使用 \n 否则使用 和 代替您的标签。<p>
</p>
0赞
Dbassx
10/13/2008
#3
您可以使用 onload 函数来替换 textarea 内容的开始和结束标记。
eg: replace < > with < >
<textarea cols="" rows=""><p>text</p></textarea>
<p>text</p>
1赞
Ross
10/13/2008
#4
我认为您尝试制作所见即所得的编辑器(例如 TinyMCE)是对的吗?大多数人似乎在 中使用 HTML 实体并通过 JavaScript 将其转换为 HTML。textarea
3赞
nickf
10/13/2008
#5
CDATA 部分是否适合您?
<textarea><![CDATA[
<p>Blah</p>
]]></textarea>
0赞
Jon
12/15/2008
#6
您可以对发布的数据使用此功能
function clean_data($value) {
if (get_magic_quotes_gpc()) { $value = stripslashes($value); }
$value = addslashes(htmlentities(trim($value)));
$value = str_replace("\'", "'", $value);
$value = str_replace("'", "'", $value);
$value = str_replace(":", ":", $value);
return $value;
}
下一个:验证网页
评论