我的网站就像Stack Overflow并正在开发中。我使用普通的textarea来输入文本,因为我没有像Stack Overflow那样的WMD编辑器。
当我将HTML代码作为输入并将其存储在文本或nvarchar(max)
列的数据库表中时,它会成功存储。但是当我调用该数据进行显示时,它会在屏幕上显示相应的HTML页面而不是HTML代码。我无法解决它。为了更好地理解,我在这里输入我的网站的输入页面和输出页面图像。
这是输入页面的图像:
这是输出页面的图像:
这里出了什么问题?
答案 0 :(得分:0)
一种简单的方法是替换
< with < and > with >
在您重新搜索的HTML字符串中,然后在页面上显示。
你试过吗?
答案 1 :(得分:0)
您需要转义HTML,以便浏览器不会解释它。如何做到这取决于你正在使用的视图技术。
使用JSP和JSTL,转义将自动使用<c:out value="${myString}"/>
完成。如果你还没有使用JSTL,现在是时候开始了(那里还有很多其他有用的东西)。
答案 2 :(得分:0)
你可以像文字一样保存html代码。您可以使用varchar(max)type列将html代码保存在表中。显示代码取决于浏览器。但是如果使用nvarchar类型会导致显示问题。
答案 3 :(得分:0)
另一种可能的解决方案是在存储到数据库之前替换html标记。我做的是: -
text=text.replaceAll("<", "<");
text=text.replaceAll(">", ">");
然后将数据存储在数据库及其工作中。感谢Bibin Mathew。
答案 4 :(得分:-1)
从textarea接收输入时,您需要使用htmlentities()转换输入文本;并存储在数据库中。它给了
<?php
$str = "A 'quote' is <b>bold</b>";
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
?>
当你提取数据库时使用html_entity_decode();恢复它。
<?php
$str = "A 'quote' is <b>bold</b>";
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str);
?>