nl2br()工作不对

时间:2012-09-23 17:13:42

标签: php mysql html textarea

我正在使用以下内容从textarea向我的mysql数据库提交帖子,以便在输出上保留单/双/三行间距。:

$update = nl2br(htmlentities($string, ENT_QUOTES, 'UTF-8'));

有时它可以工作,但有时候double会被一个行空格所取代,而其他时候会保留双行空格。这是我的输出,所有这些都是使用双线空格输入(按两次输入)。关于如何改进这一点的任何建议将不胜感激:

    something

    went

    a 
    little

    wrong
    there

感谢Prinzhorn。下面是相关表的CREATE TABLE语句。

CREATE TABLE IF NOT EXISTS `ticket_updates` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ticket_id` varchar(100) NOT NULL,
  `update` text NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `member_id` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=28 ;

2 个答案:

答案 0 :(得分:0)

如果你使用htmlentities(),它会将“\ n”编码为“%5Cn”。因此,获得实际输出可能会产生问题。

尝试以下代码,可能会帮助您找到所需的实际输出。

echo htmlentities($string, ENT_QUOTES, 'UTF-8');

答案 1 :(得分:0)

我的问题是由于使用wordwrap()尝试格式化输出引起的,而不是由于:

nl2br(htmlentities($string, ENT_QUOTES, 'UTF-8'));

我将wordwrap($update, 50, " \n", true)更改为CSS3属性word-break:break-all;word-break:break-word;无法与IE9一起使用)