【问题标题】:nl2br() not working quite rightnl2br() 工作不正常
【发布时间】:2012-09-23 17:13:42
【问题描述】:

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

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

有时它有效,但有时双行空间被替换为单行空间,而其他时候双行空间被保留。这是我的输出,所有这些都是使用双行空格输入的(按两次输入)。任何有关如何改进这一点的建议将不胜感激:

    something

    went

    a 
    little

    wrong
    there

感谢普林佐恩。下面是相关表的 CREATE TABLE 语句。

如果不存在 `ticket_updates` 则创建表( `id` int(11) NOT NULL AUTO_INCREMENT, `ticket_id` varchar(100) NOT NULL, `update` 文本不为空, `time` 时间戳 NOT NULL DEFAULT CURRENT_TIMESTAMP, `member_id` varchar(100) NOT NULL, 主键(`id`) ) 引擎=InnoDB 默认字符集=utf8 AUTO_INCREMENT=28 ;

【问题讨论】:

  • 显示CREATE TABLE 语句,尤其是对于列
  • 也许你也可以发布html代码
  • 很好 - 它不是提交它的显示! - 我想防止模板出血,所以使用 wordwrap($update, 50, " \n", true) - 这是不对的 - 但我想这是一个新类别的新问题;) - 谢谢大家!跨度>
  • 用 CSS3 word-break:break-all 修复了我的自动换行问题; - 断字:断字;不适用于 IE9 - 谢谢大家。

标签: php mysql html textarea


【解决方案1】:

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

试试下面的代码,可能会帮助你找到你需要的实际输出。

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

【讨论】:

    【解决方案2】:

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

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

    我将 wordwrap($update, 50, " \n", true) 更改为 CSS3 属性 word-break:break-all;word-break:break-word; 不适用于 IE9)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-23
      • 2023-04-10
      • 2015-01-16
      • 1970-01-01
      • 2016-08-02
      • 2020-02-18
      • 2013-01-22
      • 1970-01-01
      相关资源
      最近更新 更多