如何将txt文件设置转换为php数组


How to translate txt file settings into php array

我有一个包含以下值的文本文件:

varname:
{
    varname2: value
    varname3: 
    {
       varname4: value
    }
}

我需要以某种方式将其放入php数组中,如下所示:

array(
   varname => array
   (
      varname2 => value
      varname3 => array
      (
          varname4 => value
      ) 
   )
)

我该怎么做?

我尝试过在文件中循环,并尝试生成这样的值,但当存在多级数组时,这会变得非常棘手。好几个小时都没有运气。。。

我建议您(如果可以的话)将文件格式更改为JSON格式,这与您现在的格式非常相似:

{"varname":{"varname2":"value","varname3":{"varname4":"value"}}} 

然后你可以读取文件并使用json_decode以一种非常简单的形式获得数组

$s = file_get_contents('datos.js');
$ar = json_decode($s, true);
print_r($ar);

这取决于你希望它的破解程度。如果你有一个真正定义的格式,并且想要严格,你应该从lexer开始。看见http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/或https://github.com/nikic/Phlexy

另一方面,您也可以通过两个步骤(取决于现在显示的用例有多复杂)来实现它。

  1. 替换所有前导空格,并将: 'n{替换为: {以便于解析
  2. 编写一个递归解析函数。在每一行中,:之前的所有内容都是变量名,值之后的所有内容。如果值是{,则递归到},并使用结果作为值