Php转义JSON字符串中的特殊字符

时间:2016-03-01 02:32:38

标签: php arrays json

我有一系列产品详细信息,在 product_description 字符串中我想要转义一些特殊字符,例如:“,\ ..etc但我不知道应该写些什么到这样做,我做的是:

(4)

但是当我检查结果时,它给出了有关这些特殊字符的错误。

这是产品描述字符串:

  

30英寸Apple Cinema HD Display提供..等等。

错误在双引号中。

你能帮我解决一下怎么做。谢谢

2 个答案:

答案 0 :(得分:2)

您遇到的错误是因为"未在数组中转义。它很可能如下所示:

$array = array(
    "ProductData" => array(
        "ProductName": "Apple Cinema Display",
        "ProductDescription" => "The 30" Apple Cinema HD Display deliver..etc"
    )
);

要解决此问题,请在代码中进行以下操作:

$array = array(
    "ProductData" => array(
        "ProductName": "Apple Cinema Display",
        "ProductDescription" => "The 30\" Apple Cinema HD Display deliver..etc"
    )
);

如果要从数据库中提取数据,则应自动完成此操作。如果您不使用数据库,我的建议是在需要的地方手动添加反斜杠。由于您最有可能在整个字符串周围使用双引号,因此无法自动添加这些函数。

答案 1 :(得分:1)

您可以尝试使用

    $value = json_encode($array[ProductData][Product_description]);
    $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
    $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
    $result = str_replace($escapers, $replacements, $value);

    echo '<pre>';
    print_r($result);
    echo '<pre>';

这是参考

PHP's json_encode does not escape all JSON control characters