我在从数据库中获取数据和在HTML页面文本区域中回显数据时遇到了困难。
这是将数据输入数据库的代码:
$_SESSION['content'] = mysqli_real_escape_string($link, strip_tags($_POST['content'],'<a>'));
这只是除去HTML标签,除了链接和存储在数据库中。如果您查看数据库,换行符是不可见的,但在那里,所以我假设它们是\n和\r。
如果我要键入一个文本区域:
This should be a
New line
数据库将其存储为:
This should be a<br>
New line
当回显到文本区域时,将显示如下内容:
This should be a \r\n\r\nNew line
我肯定我错过了一些很简单的东西,任何帮助都很感激。
更新:
如果我删除了mysqli_real_escape_string,行中断就会被保留下来,并且工作得很完美,我是否必须为此牺牲安全?
解决:
mysqli_real_escape_string引发问题时,不要回显已经应用此方法的变量。仅在从数据库中插入、删除等时使用mysqli_real_escape_string,不要在数据库之前使用,绝对不能在后面使用;)
谢谢大家!
发布于 2011-12-12 13:50:01
使用正确的HTML/CSS。
;-)
这一行中断了HTML预标记中的所有工作,或者在CSS空白属性设置为:
white-space: pre;
资源:
发布于 2011-12-12 13:38:59
首先,您不应该使用nl2br,因为这会将您的\n
更改为<br>
。
您很可能需要去掉斜杠echo stripslashes($_SESSION['content'])
。
编辑以下进一步评论:
如果数据作为<br>
存储在数据库中,则只需执行str_replace('<br>',"\n",$string);
操作,就可以将<br>
转换为\n
。
发布于 2014-04-15 17:44:27
这对我起了作用:
function br2nl( $input ) {
return preg_replace( '/\<br.*\>/Ui', '', $input );
}
https://stackoverflow.com/questions/8475114
复制相似问题