【问题标题】:Preserve line breaks in mysqli fetch_assoc( ) PHP在 mysqli fetch_assoc() PHP 中保留换行符
【发布时间】:2015-06-28 11:43:35
【问题描述】:

我正在尝试使用以下代码从我的 MySQL 数据库中获取所有行:

$sql = "SELECT * FROM myTable";
$result = $conn->query($sql);
    while($row = $result->fetch_assoc()) {
        $output[]=$row;
    }
echo json_encode($output);

我的问题是,如何使用此代码保留换行符?例如,当我需要特定字符串时,我可以使用 nl2br() 保留换行符

nl2br($_row['fieldName']);

但我想知道在获取数组中的结果时如何使用相同的 nl2br()?

我也提到了this question,但这仅解释了单个字符串而不是数组。

如果没有办法,请给我一些其他的方法。

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    您需要确切知道您的 json 必须发送什么样的文本流。使用 php 的 nl2br 函数将在换行符之前插入一个名为“br”的 HTML 标记,用于在浏览器呈现 HTML 时显示换行符。如果您使用此 json 流提供的应用程序需要纯文本而不是 HTML,则使用 nl2br 不是正确的解决方案。在这种情况下,我建议在将其作为参数发送到 json_encode 函数之前,将字符串中的换行符替换为“\n”,并根据您想要做什么来充分处理 json 流消费者代码中的解码用它,html或其他任何东西。 在这种情况下,this question 可能会有所帮助。

    【讨论】:

    • 这是一个误导性的答案。来自 PHP 手册:返回在所有换行符(\r\n、\n\r、\n 和 \r)之前插入
      或
      的字符串。
    【解决方案2】:

    使用array_map可以调用函数,所以每个$row的值可以得到值。

    $sql = "SELECT * FROM myTable";
     $result = $conn->query($sql);
         while($row = $result->fetch_assoc()) {
             $output[]=array_map("nl2br",$row);
         }
    echo json_encode($output);
    

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 2021-12-26
      • 1970-01-01
      • 2013-07-27
      • 2013-11-10
      • 2015-08-16
      • 2012-11-24
      • 1970-01-01
      相关资源
      最近更新 更多