PHP Json_encode - 没有关于特定列MySQL的json数据

时间:2014-12-21 22:06:22

标签: php mysql json

我正在尝试使用mysql DB为iPhone创建一个简单的journalview应用程序。 我使用php连接到数据库并将数据编码为json。 我使用的是一个非常简单的数据库,包含3列:

  • ID
  • 受试者
  • 消息

当我从表中选择id和subject时,JSON数据会正确显示。 当我选择所有内容或单独选择消息时,我只看到一个白色屏幕。 消息列是数据类型文本,应该能够有奇怪的符号(/,\,¨,$,%,空格,行,......) 我可以通过在我的连接文件中执行以下操作来获取要显示的消息数据的唯一方法:

while($r = mysql_fetch_assoc($resultset))
        {

        //$r = preg_replace("!\r?\n!", " ",$r);
        $r= json_encode($r);

            $records[] = $r;

        }

        //Output the data as JSON

        echo json_encode($records);
    }


}

但是,返回的数据充满了反斜杠,\ r,\ n并且看起来不像json:

[{"id":"248","subject":"General","message":"Dear Diary\r\n\r\nThis is a test.\r\nDoes it work       or not?!\r\n\r\nGoodbye.\r\n\r\n\r\nD"},{"id":"249","subject":"General","message":"Hi\r\n\r\nThis is Test number 2.\r\nDoes it Work?\r\n\r\n\/\/ goodbye \\\\"}]

如果我清空我的消息栏并放入没有特殊标志的普通文本,它可以正常工作,所以我猜这是问题所在。 我会更好,但如果一条消息可能包含特殊字符和反斜杠,这是否可能?

1 个答案:

答案 0 :(得分:0)

\ n和\ r \ n是有效的,它们很好。它们是隐藏的图纸,它们以这种方式存储在您的数据库中,因此您有2个选项。使用以下功能清理数据库或清除项目,然后将其放入json中。

function clean($string) {
   $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.

   return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}

如果你想让特殊字符逃脱它们 Parsing JSON containing new line characters