保留mysqli fetch_assoc()PHP中的换行符

时间:2015-06-28 11:43:36

标签: php mysqli

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

def current_user
    @current_user ||= User.find_by(id: session[:user_id])
end

def logged_in?
    !current_user.nil?
end

我的问题是,如何使用此代码保留换行符?当我需要一个特定的字符串例如

时,我可以使用nl2br()来保留换行符
$sql = "SELECT * FROM myTable";
$result = $conn->query($sql);
    while($row = $result->fetch_assoc()) {
        $output[]=$row;
    }
echo json_encode($output);

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

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

如果无法做到这一点,请建议我采用其他方式。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

使用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);