【问题标题】:Syntax error while parsing ini file in PHP在 PHP 中解析 ini 文件时出现语法错误
【发布时间】:2019-07-04 06:13:42
【问题描述】:

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

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

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

【问题讨论】:

  • 你能显示D:\langEn.ini文件的内容吗?
  • 公司名称:Unikaihatsu Software Private Limited HO 地址(孟买):33-34, Udyog Bhavan, Sonawala Lane, Goregaon (East), Mumbai, India, PIN 400-063 电话:+91-22 -26867334 传真:+91-22-26867334 URL: usindia.com Branch Office(Ahemdabad): Unitech Systems A/410, Mardia Plaza, Near G. L. S. College, C. G. Road, Ahmedab​​ad, India, PIN 380-006 电话:+91- 79-26461287 传真:+91-79-40327081 网址:usindia.com
  • 这是我在文件中的内容
  • 使用“编辑”按钮将 ini 文件的内容添加到您的问题中并正确格式化,以便我们可以看到不同的行等。在 cmets 中很难正确读取它。谢谢
  • 谢谢@ADyson。从现在开始,我一定会牢记这一点。

标签: php ini


【解决方案1】:

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

在您的情况下,HO Address(Mumbai) 等条目由于括号 () 而无效。

来自 PHP 手册:

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

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


附:以上是您询问的错误的原因,但这不是您会遇到的唯一问题。

您应该总体上检查您的文件结构,因为它似乎与标准 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 标志是设置为假还是真。现场演示:https://3v4l.org/4q82F

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多