从字符串返回中提取数组

时间:2017-12-21 18:16:39

标签: javascript php arrays

我可以从字符串变量中提取数组:

HTTP/1.1 200 OK
Server: YYYYYYYYY
Content-Type: application/json
Content-Length: 163
X-OAPI-Request-Id: XXXXXXXXXXXXXX
{
  "token_type": "berber",
  "access_token": "XXXXXXXXYYYYYYY",
  "expires_in": "7776000"
}

我想用token_type,access_token,expires_in。

获取数组

3 个答案:

答案 0 :(得分:5)

这是一种json,所以你可以修剪掉不是json的部分并使用json_decode对其进行解码。

$arr = json_decode(substr($str,strpos($str,"{")), true);
Var_dump($arr);

这里我从“{”发送到字符串的结尾到json_decode,返回:
https://3v4l.org/r8VgO

答案 1 :(得分:1)

您可以编写小字符串切割器,然后将其转换为json

const str = `HTTP/1.1 200 OK
Server: YYYYYYYYY
Content-Type: application/json
Content-Length: 163
X-OAPI-Request-Id: XXXXXXXXXXXXXX
{
  "token_type": "berber",
  "access_token": "XXXXXXXXYYYYYYY",
  "expires_in": "7776000"
}`;

let result = str.substring(str.indexOf('{'), str.indexOf('}') + 1);
result = JSON.parse(result);

console.log(result);
console.log(result.token_type)

答案 2 :(得分:1)

以下是您从外部网站加载内容的示例:

<?php
    $page = file_get_contents( "http://urlyouused" );
    $array = json_decode( $page, true );
    print_r( $array);
?>

file_get_contents将加载显示结果的网页并放入内容。 json_decode会将JSON对象正常解码为对象。但是使用'true'标志,它将输出一个数组而不是一个对象。

这篇文章都标记了PHP和Javascript,因此这将是PHP的解决方案。我想有人发布了Javascript的答案。

修改

关于以字符串开头,帖子发生了变化或我误读(最有可能)。如果您从字符串开始,这是一个可能的解决方案:

preg_match( "#(\{.*\})#is", $string, $results );
$array = json_decode( $results[0], true );
print_r( $array );

使用preg_match获取JSON对象。需要s标志,以便返回的行不会结束搜索。基本上它试图捕获大括号内的任何内容以及构成JSON对象的括号本身。 json_decode中的true标志再次返回一个数组而不是一个对象。