gpt4 book ai didi

php - 我正在尝试将字符串转换为 php 中的数组,因为我有如下所示的字符串

转载 作者:行者123 更新时间:2023-12-01 22:06:43 24 4
gpt4 key购买 nike

我试过 explode 函数,但它没有给出我想要的输出。

这是我的代码和解释:

    {
refresh_token: "xxxx",

access_token: "xxxx",

expires_in: 21600,
}

我将此值作为字符串,我想将此 refresh_token 转换为数组中的键并将“xxxx”转换为数组中的值。

我曾尝试使用 explode 函数,但它提供了像 [0]=>“refresh_token”这样的新键。

最佳答案

explode() 不适合这项工作。使用该字符串格式,您将需要编写一个自定义函数。假设值不包含逗号,并且对象中的最后一个值总是像其他值一样以逗号结尾,则可以这样做:

function parse_value_string($string) {
preg_match_all('/([a-z_]+):\s+(.*),/', $string, $matches);

return array_combine($matches[1], array_map(function($val) {
return trim($val, '"');
}, $matches[2]));
}

$test = '{
refresh_token: "xxxx",

access_token: "xxxx",

expires_in: 21600,
}';

$values = parse_value_string($test);

print_r($values);
/*
Array
(
[refresh_token] => xxxx
[access_token] => xxxx
[expires_in] => 21600
)
*/

Demo

根据您的实际数据,您可能会遇到这种方法的问题。您的源字符串实际上非常接近常规 JSON。如果您在最后一个值之后删除逗号并将数据键用引号引起来,则可以使用 PHP 的 native JSON 支持来解析它:

$test = '{
"refresh_token": "xxxx",

"access_token": "xxxx",

"expires_in": 21600
}';

$values = json_decode($test, true);

print_r($values);
/*
Array
(
[refresh_token] => xxxx
[access_token] => xxxx
[expires_in] => 21600
)
*/

Demo

因此,如果您可以调整字符串源以生成有效的 JSON 而不是这个自定义字符串,您的生活会突然变得轻松很多。

关于php - 我正在尝试将字符串转换为 php 中的数组,因为我有如下所示的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51222422/

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