如何在php中用双引号和斜杠清理json字符串

时间:2017-08-23 11:18:34

标签: php json

我在php中遇到json字符串问题。  我有一个应用程序获取用户联系人并将其发送到服务器,我以我的方式处理联系人。

问题是某些联系人名称非常有线并且在使用json_decode()时发生了一些错误 像这样的联系人

[
   {"displayName":"Altin"'''''"''''"""""\n\""\p chapar","phoneNumbers":[{"value":"0411*******"}]},
   {"displayName":"A""""""basi","phoneNumbers":[{"value":"0914******"}]}
]

如何清理这个脏的json字符串才能正常工作? 我已尝试删除"""\\//但我看到了大量错误

感谢

1 个答案:

答案 0 :(得分:0)

试试这个

    $result = str_split($contacts);

    for ($i = 0; $i < count($result); $i++)
    {
        $found = false;

        if ($result[$i] == '"')
        {
            if ($result[$i + 1] != ':' && $result[$i + 1] != ',' 
                && $result[$i - 1] != '{' && $result[$i - 1] != '"' 
                    && $result[$i + 1] != '}' && $result[$i - 1] != ':' 
                        && $result[$i - 1] != ',')
                $result[$i] = '';
        }
    }

    $edited = implode("", $result);
    $edited = str_replace("'" , '' , $edited);
    $edited = str_replace("\\" , '' , $edited);
    $edited = str_replace("\n" , '' , $edited);
    print_r(json_decode($edited));

这将替换所有内部双引号,因此字符串将为json_decode清理以生成std_objects。