使用PHP生成JSON时的额外换行符

时间:2014-07-16 11:28:41

标签: php html json database string

我的数据库中有一些HTML,我以这种方式放入JSON,在第一页渲染时:

foreach ($data as $key => $value) {
    $output .= '
    "'.$key.'" : "'.addSlashes($value).'",
    ';
}

通常它工作正常,除了在少数情况下,我得到如下所示的前导换行符:

    "html" : "
    <div id=\"object_01\" class=\"object_textbox\" namn=\"object_01\" style=\"z-index:1;font-family:Arial;left:750.9776000976563px;top:30.979339599609375px;position:absolute;width:709.6444444656372px;height:327.6444444656372px;\"><div class=\"object_inner\" style=\"border:0px solid rgb(0,0,0);background-color:rgb(255,255,255);color:rgb(0,0,0);opacity:.8;font-size:28px;line-height:42px;padding:20px;\">“Behold my Beloved Son, in whom I am well pleased, in whom I have glorified my name—hear ye him.” And it came to pass, as they understood they cast their eyes up again towards heaven; and behold, they saw a Man descending out of heaven; and he was clothed in a white robe; and he came down and stood in the midst of them...</div></div><div id=\"object_02\" class=\"object_textbox\" namn=\"object_02\" style=\"z-index:2;font-family:Arial;position:absolute;top:309.9988098144531px;left:1269.9826049804688px;width:187.6444444656372px;height:48.64444446563721px;\"><div class=\"object_inner\" style=\"border:0px solid rgb(0,0,0);font-style:italic;font-weight:bold;\">3 Nephi 11:7-8</div></div>",

由于javascript不支持字符串中的换行符,因此显然打破了entiry页面。

任何可能导致它的内容,或者解决它的方法?

数据库中的所有数据都是从表单保存的页面中获取的,因此用户永远不会手动插入该换行符...我只是使用jQuery element.html()来获取它所以不应该在那里做一个换行......

1 个答案:

答案 0 :(得分:2)

从不“手动”构建JSON。使用内置函数:

<?php
$output = json_encode($data);

JSON如此受欢迎的原因之一(除了它与JavaScript的兼容性之外)是它是一种广泛支持的序列化方案。几乎每种语言和平台现在都有用于处理它的库,因此您可以在任何环境中为任何其他环境可靠地序列化和反序列化您的数据。

一旦你使用json_encode,那么数据中的任何内容都会在序列化之前出现。因此,如果换行符仍然存在,则不是序列化导致它 - 您需要在其他代码/数据中找到它。