MYSQL PHP如何保存textarea中的换行符以便于后续显示

3

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

但是当我从数据库中检索它并在文本区域中显示进行编辑时,换行符不见了,文字变成了一个长字符串。

我希望原来存在的换行符重新出现。 如何使插入回文本区域时换行符显示正确?

注意:不能只是将它们转换为<br>,因为这是要放在


你不能使用字符串替换函数将 \n 替换为 <br/> 吗?还是我没有清楚理解你的问题? - samayo
厄立特里亚,没有理由让 OP 这样做。MySQL 可以自己很好地保存\n - maček
如果您查看页面源代码,编辑字段中的行是否正确分割? - tadman
请发布您的查询和执行该查询的 PHP 代码,否则我们无法确定为什么您的换行符会消失。 - Linas
抱歉如果我没有正确表达问题。我希望在打开文本区域框时保留换行符,而不是在HTML中显示。换句话说:在<textarea>标签内,任何标签都显示为<br>而不是为新行。在文本区域内,新行是不可见的,但重新显示出数据库后它们似乎会消失。 - user1260310
查询没什么不寻常的,Linas。首先 $sql="INSERT INTO table (userid, text) VALUES ('$userid', '$text')"。然后当我将其取出来时,执行 fetch,接着输出 '<textarea>'.$row['text'].'</textarea>'。如果文本中有换行符,则在输出到 textarea 中时会丢失。 - user1260310
4个回答

5

大家都建议将换行符转换为<br />,但是根据你的问题陈述,这并不是你想要的。你想要再次在文本区域中显示换行符。所以,你需要使用stripcslashes() - 这将去除\n并给你你想要的东西,即文本区域中的换行符,而不是HTML <br />标签:

PHP: stripcslashes

用法:

echo stripcslashes($input_text);

0
你可以像这样使用:
echo nl2br($someText);

-1

当我处理这种问题时,通常会采取以下做法:

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

    echo str_replace("\n", "<br />", $data);
    
使用这种技术,您可以保留用户在文本区域中使用的任何格式数据。

不能在文本框中使用 <br>,因为它会显示为标签。我打算尝试将输入的 \n 保存为其他内容,比如 ***,当我在文本框中显示时,使用您的建议将 *** 替换为 \n,看看是否有效。 - user1260310
我的方法没有奏效。什么都没有打印出来。所以我还在寻找答案。 - user1260310
这是处理方式:通常,用户会使用[return]作为新行。 这翻译成\n。将其保留并存储到数据库中。 下次用户想要更改内容时,只需显示保存的任何数据(包括\n)。 但是,当您想要将数据显示给HTML时,请先格式化它们,将\n替换为<br /> - ariefbayu
如果有人能告诉我如何在文本区域中显示回车,那就解决了问题。我已经尝试过 \n、'\n'、"\n",以及同样带有 \r\n 的变化形式,但它们只是作为字符出现在文本中,而不是作为回车。 - user1260310

-1

str_replace() 不是这样用的:

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

它是这样的:
str_replace("SEARCH_FOR","REPLACE_WITH",STRING);

在这个意义上,SEARCH_FOR 是你想要查找的内容,REPLACE_WITH 是你想要替换成的内容,而 STRING 则是你正在使用的变量(例如 $data)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接