正如其他人已经指出的那样,最好将JSON格式的问题告知客户。要求他们将错误报告发送给原始开发者/公司,以便他们进行修复。如果他/他们无法解决-
请提供您的解决方案。您只需要
addslashes在字符串之前就可以
json_enpre了。
如果由于某种原因最终不得不进行
fix格式化,则可以采用以下方法:
$data = '"contact1": "David "Dave" Letterman", "contact2": "Peter "Robert" Smith",{'test': 'working "something"'}';function replace($match){ $key = trim($match[1]); $val = trim($match[2]); if($val[0] == '"') $val = '"'.addslashes(substr($val, 1, -1)).'"'; else if($val[0] == "'") $val = "'".addslashes(substr($val, 1, -1))."'"; return $key.": ".$val;}$preg = preg_replace_callback("#([^{:]*):([^,}]*)#i",'replace',$data);var_dump($preg);// string '"contact1": "David "Dave" Letterman", "contact2": "Peter "Robert" Smith",{'test': 'working "something"'}' (length=110)请记住,如果有人再次弄乱json格式,这可能会中断。



