从MySQL TEXT栏拉出时在HTML中显示空白

时间:2020-03-06 14:57:18  来源:igfitidea点击:

我已将输入从textarea元素保存到MySQL中的TEXT列。我正在使用PHP将数据从数据库中拉出,并希望将其显示在p元素中,同时仍显示用户输入的空格(例如多个空格和换行符)。我尝试了pre标签,但是它不遵守包含div元素中设置的宽度。除了创建PHP函数以将空格转换为&nbsp并将新行转换为br标记之外,我还有哪些选择?我希望使用干净的HTML / CSS解决方案,但欢迎任何输入!谢谢!

解决方案

我们可以使用以下CSS来使" pre"中的文本换行

pre {
 white-space: pre-wrap;       /* css-3 */
 white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 white-space: -pre-wrap;      /* Opera 4-6 */
 white-space: -o-pre-wrap;    /* Opera 7 */
 word-wrap: break-word;       /* Internet Explorer 5.5+ */
}

取自本网站

目前,它是在CSS3中定义的(尚未完成标准),但是大多数浏览器似乎都根据注释支持它。

我们有两个相互竞争的要求。我们或者希望内容适合某个区域(即:宽度:300像素),或者要在用户输入时保留空白和换行符。我们不能同时做这两个事情,因为一个在定义上会干扰另一个。

由于HTML不支持空格,因此我们唯一的选择是使用<pre>标签将多个空格更改为"",并将换行符更改为<br />,或者指定css样式为" white-space:pre"。

关于div的问题,我们始终可以使其滚动或者向下调整字体(甚至可以根据服务器端代码中最长行的长度来动态调整字体)。

我们可以只使用PHP的nl2br函数。