preg_match_all不工作或显示结果

preg_match_all is not working or showing result

提问人:KRISHN4 提问时间:3/2/2023 更新时间:3/2/2023 访问量:59

问:

{"popUp":false,"token":"NS2938f08ubjk765vhjJBKJB78vhjeec1_m1_7"} 这是JSON中的curl响应,我想从这个JSON响应中提取令牌。

我使用了preg_match_all函数,但它显示 null

这是我的代码

preg_match_all('/^"token":"\s*([^;]*)/mi', $result, $matches);
$token = array();
foreach($matches[1] as $item) {
    parse_str($item, $newtkn);
    $token = array_merge($token, $newtkn);
}
var_dump($newtkn)

我想将该令牌存储在$newtkn变量中并将其回显到屏幕上,我该怎么做?

php 函数 preg-match preg-match-all

评论

0赞 Robert 3/2/2023
尝试。 在 preg 的开头表示字符串应从 开始。preg_match_all('/"token":"([^"]*)"/mi', $result, $matches)^"token"

答:

0赞 Matthiaasr 3/2/2023 #1

可能更容易使用 json_decode(),如下所示:

$result = '{"popUp":false,"token":"NS2938f08ubjk765vhjJBKJB78vhjeec1_m1_7"}';

$arr = json_decode($result, true);

$newtkn = $arr['token'];

echo $newtkn; //NS2938f08ubjk765vhjJBKJB78vhjeec1_m1_7

或者,如果您更喜欢定向对象答案:

$result = '{"popUp":false,"token":"NS2938f08ubjk765vhjJBKJB78vhjeec1_m1_7"}';

$obj = json_decode($result);

$newtkn = $obj->token;

echo $newtkn; //NS2938f08ubjk765vhjJBKJB78vhjeec1_m1_7