使用 preg_match 在字符串中获取 json 格式

get json format in string with preg_match

我有这样的字符串:

$string = 'Cache-Control: no-store
Content-Language: en-US-x-lvariant-USA
Vary: Accept-Encoding

{
  "valid" : true,
  "used" : true,
  "isRecycledDomain" : false
}';

现在我想在该变量中匹配 "used" : true,。我尝试 preg_match 使用此模式但仍然无法正常工作。

if (preg_match('~\b\"used\" : true,\b~', $string)) {
    //word matched!
} else {
    //not found
}

如果你能修复字符串,那就修复吧..

否则它的 json 与 HTTP header 有 2 个新行的标准然后是 body 你可以将 json 拆分并解码成一个可行的数组有几行。

<?php
$string = 'Cache-Control: no-store
Content-Language: en-US-x-lvariant-USA
Vary: Accept-Encoding

{
  "valid" : true,
  "used" : true,
  "isRecycledDomain" : false
}';

$string = explode("\n\n", $string, 2)[1];

$array = json_decode($string, true);

echo $array['valid'];