<accounts>
user=15@220 bindlan=none auto_bindmac=yes cn=包 
user=16@613 auto_bindmac=yes bindlan=none cn=包 
user=15@116 bindlan=none cn=- desc=- maxlogin=1再不用explode的情况下,把上面的格式解析成数组,如 $a[accounts][user]='15@220'这种格式explode是下下策,众多PHP函数,有一个能解析此类格式文件吗?类似于parse_ini_file这种函数

解决方案 »

  1.   

    $s = <<< TXT
    <accounts>
    user=15@220 bindlan=none auto_bindmac=yes cn=包 
    user=16@613 auto_bindmac=yes bindlan=none cn=包 
    user=15@116 bindlan=none cn=- desc=- maxlogin=1
    TXT;$s = str_replace(' ', "\n", $s);
    $s = str_replace('<', "[", $s);
    $s = str_replace('>', "]", $s);$p = parse_ini_string($s, 1);
    print_r($p);Array
    (
        [accounts] => Array
            (
                [user] => 15@116
                [bindlan] => 
                [auto_bindmac] => 1
                [cn] => -
                [desc] => -
                [maxlogin] => 1
            ))
      

  2.   

    $s = <<< TXT
    <accounts>
    user=15@220 bindlan=none auto_bindmac=yes cn=包 
    user=16@613 auto_bindmac=yes bindlan=none cn=包 
    user=15@116 bindlan=none cn=- desc=- maxlogin=1
    TXT;preg_match_all("/[\S]+=[^\s]*/",$s,$c);
    print_r($c);
    Array
    (
        [0] => Array
            (
                [0] => user=15@220
                [1] => bindlan=none
                [2] => auto_bindmac=yes
                [3] => cn=包
                [4] => user=16@613
                [5] => auto_bindmac=yes
                [6] => bindlan=none
                [7] => cn=包
                [8] => user=15@116
                [9] => bindlan=none
                [10] => cn=-
                [11] => desc=-
                [12] => maxlogin=1
            ))
      

  3.   

    楼上2种方法都可以
    郑州PHP.Net
    http://www.zzphp.net/
      

  4.   

    parse_ini_string 第一次看到呢.