我有一个巨大的字符串转储,其中包含常规文本和 JSON 的混合。我想从字符串转储中分离/删除 JSON 对象并仅获取文本。
这是一个例子:
This is some text {'JSON':'Object'} Here's some more text {'JSON':'Object'} Yet more text {'JSON':'Object'} Again, some text.
我的目标是得到一个看起来像这样的文本转储(基本上 JSON 已被删除):
This is some text Here's some more text Yet more text Again, some text.
我需要在 PHP 中完成这一切。文本转储总是随机的,JSON 数据结构也是如此(其中大部分是深度嵌套的)。转储可能以 JSON 开头,也可能不以 JSON 开头,并且在字符串转储中可能包含也可能不包含多个 JSON 对象。
我尝试json_decode
在字符串上使用,但结果最终为NULL
编辑:Amal 的答案非常接近我想要的(见下面的第二条评论):
$str = preg_replace('#\{.*?\}#s', '', $str);
但是,它根本没有摆脱嵌套对象。例如括号中的数据:[]
或[{}]
抱歉,我不是正则表达式专家。
我意识到你们中的一些人可能需要一个我正在处理的字符串转储的更具体的例子;因此我创建了一个要点(请注意,这不是静态数据;转储中的数据总是不同的;我上面的示例只是简化了我正在使用的字符串):https ://gist.github.com /匿名/6855800