【问题标题】:MYSQL PHP Save linebreaks in textarea for later displayMYSQL PHP 在 textarea 中保存换行符以供以后显示
【发布时间】:2012-11-06 07:38:38
【问题描述】:

我正在从文本区域收集文本。文本中有换行符。然后我将它保存到数据库中。

但是,当我从数据库中检索它并将其显示回文本区域进行编辑时,换行符消失了,文本变成了一个长的连续字符串。

我希望原来的换行符重新出现。如何使换行符在插入文本区域时按应有的方式显示?

注意:不能将它们转换为<br>,因为这是在文本区域内,而<br> 元素不会被渲染,但只是写成文本。我想要实际的换行符。

【问题讨论】:

  • 你不能使用字符串替换功能将 \n 替换为
    吗?还是我没有清楚地了解你的问题
  • 厄立特里亚,OP 应该没有理由必须做这样的事情。 MySQL 自己保存\n 就好了。
  • 如果您查看页面的源代码,编辑字段中的行是否正确拆分?
  • 发布您的查询以及执行该查询的 php 代码,没有它我们无法判断您的 \n 为何消失
  • 对不起,如果我没有正确表达问题。我希望它在打开的文本区域框中显示它时保留换行符,而不是在 html 中。换句话说: 在 textarea 标签中,任何标签都显示为
    而不是换行符。新行在 textarea 中是不可见的,但当您从数据库中重新显示时,它们似乎会消失。

标签: php mysql line-breaks


【解决方案1】:

这是我在处理这类问题时通常会做的:

  1. 在表单中保存任何数据接收器。这意味着,如果用户使用换行符,则以这种方式存储。不要改变它。
  2. 显示数据后,将每个换行符转换为<br />

    echo str_replace("\n", "<br />", $data);
    

使用这种技术,您可以将用户使用的任何格式数据保存在 textarea 中。

【讨论】:

  • 不能使用
    ,因为它在 textarea 框中显示为标签。我将尝试将输入的 \n 保存为 *** 之类的其他内容,当我在 textara 中显示时,请使用您的建议将 *** 替换为 \n 并查看是否有效。
  • 我的方法不起作用。根本没有打印任何东西。所以还在寻找答案。
  • 这里是交易:通常,用户将使用 [return] 作为新行。这翻译为\n。保持原样并将其存储到数据库中。下次用户想要更改内容时,只需向他们显示保存的任何数据(包括\n)。但是,当您想将数据显示为 html 时,请先格式化它们,将 \n 替换为 &lt;br /&gt;
  • 如果有人能告诉我如何在 textarea 中显示返回,那将解决问题。尝试了 \n、'\n'、"\n" 以及与 \r\n 相同的变体,它们只是在文本中显示为字符而不是返回。
【解决方案2】:

str_replace() 不是这样的:

echo str_replace($data, "\n", "<br />");

是这样的:

str_replace("SEARCH_FOR","REPLACE_WITH",STRING);

从某种意义上说,SEARCH_FOR 是您要查找的内容,REPLACE_WITH 是您要替换的内容,STRING 是您正在使用的变量(例如 $data)。

【讨论】:

    【解决方案3】:

    你可以使用这样的东西:

    echo nl2br($someText);
    

    【讨论】:

      【解决方案4】:

      每个人都建议将换行符转换为&lt;br /&gt;,但是正如您在问题中所说的那样,这不是您想要的。您想再次在 textarea 中显示换行符。所以,你需要的是stripcslashes() - 这将剥离\n 并给你你所追求的,在你的textarea中换行,而不是在textarea中的html &lt;br /&gt;标签:

      PHP:stripcslashes

      用法:

      echo stripcslashes($input_text);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-09
        • 1970-01-01
        • 1970-01-01
        • 2017-01-24
        • 1970-01-01
        • 2011-08-07
        • 1970-01-01
        相关资源
        最近更新 更多