gpt4 book ai didi

PHP:如何从字符串转储中提取 JSON 字符串

转载 作者:可可西里 更新时间:2023-11-01 00:09:26 24 4
gpt4 key购买 nike

我有一个巨大的字符串转储,其中混合了常规文本和 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/anonymous/6855800

最佳答案

我希望您使用 JSON_decode 发布您尝试使用的代码,但是哦,好吧......

您可以在 PHP 中对嵌套大括号使用递归正则表达式:

$res = preg_replace('~\{(?:[^{}]|(?R))*\}~', '', $text);

regex101 demo (以蓝色突出显示的部分将被删除)。

关于PHP:如何从字符串转储中提取 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com