首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Textareas、New和nl2br的问题

Textareas、New和nl2br的问题
EN

Stack Overflow用户
提问于 2011-12-12 13:30:49
回答 5查看 3.6K关注 0票数 2

我在从数据库中获取数据和在HTML页面文本区域中回显数据时遇到了困难。

这是将数据输入数据库的代码:

代码语言:javascript
代码运行次数:0
运行
复制
$_SESSION['content'] = mysqli_real_escape_string($link, strip_tags($_POST['content'],'<a>'));

这只是除去HTML标签,除了链接和存储在数据库中。如果您查看数据库,换行符是不可见的,但在那里,所以我假设它们是\n和\r。

如果我要键入一个文本区域:

代码语言:javascript
代码运行次数:0
运行
复制
This should be a 

New line

数据库将其存储为:

代码语言:javascript
代码运行次数:0
运行
复制
This should be a<br>
New line

当回显到文本区域时,将显示如下内容:

代码语言:javascript
代码运行次数:0
运行
复制
This should be a \r\n\r\nNew line

我肯定我错过了一些很简单的东西,任何帮助都很感激。

更新:

如果我删除了mysqli_real_escape_string,行中断就会被保留下来,并且工作得很完美,我是否必须为此牺牲安全?

解决:

mysqli_real_escape_string引发问题时,不要回显已经应用此方法的变量。仅在从数据库中插入、删除等时使用mysqli_real_escape_string,不要在数据库之前使用,绝对不能在后面使用;)

谢谢大家!

EN

回答 5

Stack Overflow用户

发布于 2011-12-12 13:50:01

使用正确的HTML/CSS。

;-)

这一行中断了HTML预标记中的所有工作,或者在CSS空白属性设置为:

代码语言:javascript
代码运行次数:0
运行
复制
white-space: pre;

资源:

http://www.w3schools.com/cssref/pr_text_white-space.asp

http://www.quirksmode.org/css/whitespace.html

票数 5
EN

Stack Overflow用户

发布于 2011-12-12 13:38:59

首先,您不应该使用nl2br,因为这会将您的\n更改为<br>

您很可能需要去掉斜杠echo stripslashes($_SESSION['content'])

编辑以下进一步评论:

如果数据作为<br>存储在数据库中,则只需执行str_replace('<br>',"\n",$string);操作,就可以将<br>转换为\n

票数 1
EN

Stack Overflow用户

发布于 2014-04-15 17:44:27

这对我起了作用:

代码语言:javascript
代码运行次数:0
运行
复制
function br2nl( $input ) {
    return preg_replace( '/\<br.*\>/Ui', '', $input );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8475114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档