JSON解码PHP

时间:2017-04-21 08:51:35

标签: php arrays json wordpress decode

我正在使用一个名为King composer for pagepress的页面构建器,我正在尝试构建一些自定义函数,就像预期的一样。

我的问题是,内置的背景颜色选择器是base64编码背景属性,所以我需要解码它 - 但首先我需要解码' my-css' json,这样我就可以访问不同的属性。

这是我从建造者那里得到的回报。

array (
    '_id' => '69391',
    'image' => '294,9,16',
    'gallery-text' => 'Dette er nærmest et galleri',
    'my-css' => '{
           `kc-css`:{
                  `any`:{
                       `typography`{`color|`:`#ffffff`},
                       `background`{`background|`:`longBase64StringHere`},
                       `box`:{`margin|`:`100px inherit inherit inherit`}
                       }
                    }
                 }',
      )

到目前为止,我已尝试过:

 $decodedBackground = base64_decode($atts['my-css']);

返回null

然后我尝试了:

 $decodedJson = json_decode($atts['my-css']);

返回:null

还尝试了其他一些可怕的错误

我不太了解它,我可以很好地访问其他属性,因为它只是数组的一部分,但CSS部分,我无法理解。我想我需要深入研究 - 但我无法让它发挥作用。

现在已经停留了大约1.5小时,所以任何帮助或指示都会受到赞赏

/ ------编辑----- /

所以这就是我试图在之后检查解码的json的方式 - 可能很重要。

 $decodedJson = json_decode($atts['my-css'], true);
 echo '<pre>' . var_export($decodedJson, true) . '</pre>';

1 个答案:

答案 0 :(得分:2)

这可能不是最佳方法,因为kc-css中的JSON格式不正确,但此代码适用于您的情况:

// Refomating JSON
$atts['my-css'] = str_replace('`{', '`:{', $atts['my-css']);
$atts['my-css'] = str_replace('`', '"', $atts['my-css']);

$json = json_decode($atts['my-css'], true);