PHP Json_encode - 特定列 MySQL 上没有 json 数据


PHP Json_encode - No json data on specific column MySQL

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

  • 编号
  • 主题
  • 消息

当我从表中选择 id 和主题时,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、',并且看起来不像有效的 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 ''''"}]

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

' 和 ''r 有效,它们很好。它们是隐藏的图表,它们也以这种方式存储在您的数据库中,因此您有 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.
}

如果要保留特殊字符转义它们解析包含换行符的 JSON