php将此语法转换为object / array

时间:2015-06-06 13:32:49

标签: php arrays string object decode

有没有办法解决这个问题:

network={
    ssid="tele2-ssid-66577"
    #psk="testtest2"
    psk=8308d8e34c60fe471fda6837ab5821694e8cf51a655f24295797df33d02df6e9
}

使用php进入对象或数组?

我尝试了没有结果的json_decode。

-------------更新:

最终目标是只提取psk键,我只是想把它变成一个对象/数组是最简单的事情,而不是干涉正则表达式或摆弄字符串,但也许它不可能..

1 个答案:

答案 0 :(得分:0)

我通过正则表达式然后进行了一些处理

$str = 'network={
    ssid="tele2-ssid-66577"
    #psk="testtest2"
    psk=8308d8e34c60fe471fda6837ab5821694e8cf51a655f24295797df33d02df6e9
}';

$output = array();
if (preg_match_all('/(([^=]+)=\{|\s+([^#]+)=(.*))/', $str, $match) and sizeof($match[2]) > 2) {
    $output[$match[2][0]] = array();
    for ($i=1; $i<sizeof($match[2]); $i++) {
        $key = trim($match[3][$i]);
        $value = trim($match[4][$i]);

        // remove outer double quotes
        if (preg_match('/^"(.*)"$/', $value, $match2)) $value = $match2[1];

        // save
        $output[$match[2][0]][$key] = $value;
    }
}

print_r($output);

给出输出:

Array
(
    [network] => Array
        (
            [ssid] => tele2-ssid-66577
            [psk] => 8308d8e34c60fe471fda6837ab5821694e8cf51a655f24295797df33d02df6e9
        )
)