【问题标题】:Replace/display new line from MYSQL to PHP替换/显示从 MYSQL 到 PHP 的新行
【发布时间】:2017-05-06 01:46:15
【问题描述】:

在我的 php 生成的 html 页面中显示 mysql 的换行符时遇到了一个大问题。 我试过nl2br(),手动str_replace()等等... 在我的 sql 数据库中,记录是这样的:

first line
second line
third line

但是:该记录中没有 \n<br>。 如果我通过 ajax 调用并在其上使用 javascript:data.mystring.replace(/\n/g, "<br />") 获取该数据,则一切正常!

但现在我必须直接通过 php 回显该数据。而且我没有看到任何换行符。不管我怎么尝试。有什么想法吗?

这是脚本(通过 ajax 调用插入):

$adress = mysqli_real_escape_string($con, $_POST["adress"]);
mysqli_query($con, "INSERT INTO Contact SET Adress = '$adress');

在我的php页面上读取数据库的数据:

mysqli_query($con, "SET NAMES 'utf8'");
$query = mysqli_query($con, "SELECT * FROM Contact");
$dsatz = mysqli_fetch_assoc($query);
$newString = $dsatz["Adress"];

echo nl2br($newString);

【问题讨论】:

  • 好吧,如果该正则表达式有效,那么数据库数据中有一个\n,或者如果你是unixer,它可能是一个\r\n
  • nl2br() 可以正常工作,所以问题出在您的数据/脚本中。显示您的脚本/标记。
  • 你有 Notepad++ 或能显示换行符的编辑器吗?
  • 不,在 Mac 上工作
  • “地址”用于演讲。 “地址”用于位置。此外,@RiggsFolly 可能是正确的。您可能需要str_replace("\r\n",'<br />', $address)

标签: javascript php mysql replace newline


【解决方案1】:

由于您的数据库中没有显示 \n,您可以这样做

UPDATE tab SET yourcommentcolumn= REPLACE(yourcommentcolumn, CHAR(13), '\\n');

CHAR() 采用 回车 13 的 ASCII 码(或者如果您的意思是 newline,您可以将其替换为带有代码 10 的 newline >) 和\\n 是为了逃避\n。

如果您设法替换它们,那么您可以:

echo nl2br($yourString)

【讨论】:

  • 在 MySQL 和 PHP 的内置函数中使用的最佳答案,尽管查询可以更改为 SELECT REPLACE('columnName', CHAR(13), '\\n') AS 'columnName'从“表名”;保留原始数据。
【解决方案2】:

您可以查找每个字符并使用 ord PHP 函数检查它的值。

对照 ascii 表检查值,看看你的行分隔符是什么值。

您可以使用 str_split 或在循环中访问一个字符串(如数组)并单独检查每个字符。

ord 文档:http://php.net/manual/en/function.ord.php chr(包含指向 ascii 表的链接)文档:http://php.net/manual/en/function.chr.php 字符串(按字符部分访问和修改字符串)文档:http://php.net/manual/en/language.types.string.php 和str_split函数:http://php.net/manual/en/function.str-split.php

【讨论】:

  • 感谢您提供的信息!这解决了问题,因为它向我展示了这是一个进口问题。导入的数据没有新行。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-06-02
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
  • 2016-05-05
  • 1970-01-01
  • 2011-06-04
相关资源
最近更新 更多