如何对单引号的json数据进行json_encode?

时间:2016-04-06 12:45:26

标签: php mysql json

从DB中取出后,我在其上执行打印json_encode,如下所示

function queryPrintJson($cnx, $query) {
    $rows=queryReturnJsonArray($cnx, $query);       
    print json_encode($rows, JSON_HEX_APOS);
}

function queryReturnJsonArray($cnx, $query) {
    $result=mysqli_query($cnx, $query) or die ("Can't execute query!");
    $rows = array();

    while($obj = $result->fetch_object()){
        $rows[] = $obj;
    }
    $result->close();
    return $rows;
}

它不会打印任何东西。调试后,即var_dump等,简化查询,减少数据结果......我无法实现这一点,因为其中一个字段(描述)中包含单引号(即')。由于存在此单引号,我无法让json_encode工作。

有没有解决这个问题,而不是去数据库并手动编辑所有带转义字符的数据?也许是一种在从db中检索后替换自动转义单引号的方法?

已更新 显然这不是由于单引号问题,而是一个特殊的单引号称为单引号。检查http://unicodelookup.com/#’'/1

找到另一个,这是 - 和 - 。请参阅http://unicodelookup.com/#–-/1。第一个将导致json_encode不返回任何内容。

另一个是“和"。 http://unicodelookup.com/#“"/1

1 个答案:

答案 0 :(得分:1)

单一报价不应影响您的json_encode()功能。

实施例

$person = array(
    "name" => "I don't know my Name",
    "email" => "I don't know my Email as well"
);   
print_r($person);

输出

Array
(
    [name] => I don't know my Name
    [email] => I don't know my Email as well
)

echo json_encode($person);

输出

{"name":"I don't know my Name","email":"I don't know my Email as well"}