我有一个JSON字符串无效像{“主题”:“电视60”新”,‘体’:‘和我联系查看详细’} 。正则表达式替换所有双引号中的字符串“到”,以有效的JSON字符串
,我尝试使用PHP的preg_replace来有效此JSON字符串,但失败。
请帮我创建一个正则表达式来取代“到/”。
在此先感谢。
我有一个JSON字符串无效像{“主题”:“电视60”新”,‘体’:‘和我联系查看详细’} 。正则表达式替换所有双引号中的字符串“到”,以有效的JSON字符串
,我尝试使用PHP的preg_replace来有效此JSON字符串,但失败。
请帮我创建一个正则表达式来取代“到/”。
在此先感谢。
$string =~ /(?!<[\{:,])\"(?!\s*[:,\}]/\\"/g
此正则表达式查找任何“不符合:a或a(并且不是跟随:a或a)并且用\字符引用它。这应该适合你。
除非你正则表达式来验证在插入到JSON对象之前键/值,使用正则表达式是不是尝试验证一个给定的JSON对象的好方法。
即使你正试图在插入时进行验证,它似乎正则表达式是大材小用,而是你可以使用各种辅助方法或只需通过原始字符串进行迭代,并更换必要的时候。
假设“{”,“:”和“”在你的JSON没有他们和双引号之间的任何尾随空格字符,一个解决办法是这样的:
$sanitizedJsonString = preg_replace('/([^:,{])"([^:,}])/', "$1".'\"'."$2", $yourMalformedJsonString);
它发现不是由之前的所有引用文字“{”,“:”或“”字符和后面没有‘:’“”或‘}’字符并以“\“”字符替换它们 。
希望它能解决您的问题,但请记住,有些特殊情况下此方法会失败:例如,如果内部你那些畸形的JSON你必须引用文字里面一个字,后跟一个逗号这样的:
{"subject":"tv 60" new","body":"contact "me", for detail"}
你仍然有一个不是有效的JSON:
{"subject":"tv 60\" new","body":"contact \"me", for detail"}
如果你需要一个更可靠的解决方案我同意Steve P.,你必须实现一个脚本来解析你的字符串,并在需要时替换blockquotes。
我没有在你的JSON中看到'/ ...' –
这个网站对于正则表达式来说是一个很好的资源:http://www.regexr.com/ – Sevyns
正则表达式不够聪明,无法知道有效的json句法。 – hjpotter92