在PHP中解析ini文件时出现语法错误

时间:2019-07-04 06:13:42

标签: php ini

我一直在尝试调查错误,但似乎无法解决。有人能帮忙吗。谢谢。

  

警告:语法错误,D:\ langEn.ini的第4行中出现意外的'('   第12行的D:\ Xampp \ htdocs \ PhpProject1 \ companyinfo.php

class CompanyInfo
{
    function parse_files()
    {
        //files created for localization
        $file1 = "D:\langEn.ini";
        $file2 = "D:\jap.ini";

        if($file1 == TRUE)
        {
            print_r(parse_ini_file($file1));
        }
        else
        {
            print_r(parse_ini_file($file2));
        }

    }
}

$obj = new CompanyInfo;
$obj ->parse_files();

输出:

Company Name:
Unikaihatsu Software Private Limited

HO Address(Mumbai):
33-34, Udyog Bhavan, Sonawala Lane,
Goregaon (East), Mumbai, India, PIN 400-063
Phone:+91-22-26867334 Fax:+91-22-26867334
URL: http://www.usindia.com

Branch Office(Ahemdabad):
Unitech Systems 
A/410, Mardia Plaza, Near G. L. S. College,
C. G. Road, Ahmedabad, India, PIN 380-006
Phone:+91-79-26461287 Fax:+91-79-40327081
URL: http://www.usindia.com

Branch Office(Indore):
1st Floor, MPSEDC-STP Building, 
Electronics Complex, 
Pardeshipura, Indore, India, PIN 452010
Phone : +91-731-4075738 Fax : +91-731-4075738
URL : http://www.usindia.com

1 个答案:

答案 0 :(得分:1)

我认为该错误的原因是您不能在ini文件中使用某些字符。

在您的情况下,由于括号HO Address(Mumbai)(,诸如)之类的条目无效。

摘自PHP手册:

  

字符?{}|&~![()^"不能在键的任何位置使用,并且在值中具有特殊含义。

您可以在parse_ini_file() documentation中阅读更多内容。


P.S。上面是您所询问的错误的原因,但这并不是您会遇到的唯一问题。

您应该总体上检查文件结构,因为它看起来根本不符合标准ini file format。 ini文件的格式通常应为

[simple]
val_one=SomeValue
val_two=567

[simple2]
val_three=SomeOtherValue
val_four=890

其中[simple]表示段,然后val_oneval_two等是键,而SomeValue567等是值。使用PHP的parse_ini_*函数解析以上内容会产生任何一种

Array
(
    [val_one] => SomeValue
    [val_two] => 567
    [val_three] => SomeOtherValue
    [val_four] => 890
)

Array
(
    [simple] => Array
        (
            [val_one] => SomeValue
            [val_two] => 567
        )

    [simple2] => Array
        (
            [val_three] => SomeOtherValue
            [val_four] => 890
        )
)

取决于$process_sections标志是设置为false还是true。现场演示:https://3v4l.org/4q82F

另外,这是个有点奇怪的数据,要存储在ini文件中-这些文件通常用于存储诸如应用程序设置之类的内容,而您的办公室地址可能更适合存储在数据库中(或至少存储在JSON中)文件),其中将存在a)更多结构,b)对非字母数字字符使用的限制更少。