ini文件格式和读取

INI ”就是英文 “initialization”的头三个字母的缩写;当然INI file的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"

经典格式如下:

INI文件的格式很简单,最基本的三个要素是:parameters,sections和comments。

什么是parameters?

INI所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,如下所示:

name = value

什么是sections ?

所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。

section如下所示:

[section]

什么是comments ?

在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。

注释实例如下:

;comments text

当然,上面讲的都是最经典的INI文件格式,随着使用的需求INI文件的格式也出现了很多变种;

INI实例1:

test.ini

; 通用配置,文件后缀.ini
[common]

application.directory = APPLICATION_PATH  "/application"
application.dispatcher.catchException = TRUE


; 数据库配置
resources.database.master.driver = "pdo_mysql"
resources.database.master.hostname = "127.0.0.1"
resources.database.master.port = 3306
resources.database.master.database = "database"
resources.database.master.username = "username"
resources.database.master.password = "password"
resources.database.master.charset = "UTF8"


; 生产环境配置
[product : common]

; 开发环境配置
[develop : common]

resources.database.slave.driver = "pdo_mysql"
resources.database.slave.hostname = "127.0.0.1"
resources.database.slave.port = 3306
resources.database.slave.database = "test"
resources.database.slave.username = "root"
resources.database.slave.password = "123456"
resources.database.slave.charset = "UTF8"

; 测试环境配置
[test : common]

读取文件:

<?php

$config=parse_ini_file('./test.ini');

print_r($config);

测试打印:

$ php -f test.php
Array
(
    [application.directory] => APPLICATION_PATH/application
    [application.dispatcher.catchException] => 1
    [resources.database.master.driver] => pdo_mysql
    [resources.database.master.hostname] => 127.0.0.1
    [resources.database.master.port] => 3306
    [resources.database.master.database] => database
    [resources.database.master.username] => username
    [resources.database.master.password] => password
    [resources.database.master.charset] => UTF8
    [resources.database.slave.driver] => pdo_mysql
    [resources.database.slave.hostname] => 127.0.0.1
    [resources.database.slave.port] => 3306
    [resources.database.slave.database] => test
    [resources.database.slave.username] => root
    [resources.database.slave.password] => 123456
    [resources.database.slave.charset] => UTF8
)

INI实例2,多维数组:

env.conf

;应用程序配置
[application]
env=develop

[dblist]
dbtype[]=test
dbtype[]=dev
dbtype[]=v1
dbtype[]=release
dbtype[]=online

读取示例:

<?php

//第二个参数设置为true,读取多维数组
$config=parse_ini_file('./env.conf',TRUE);

print_r($config);

测试打印:

$ php -f test.php
Array
(
    [application] => Array
        (
            [env] => develop
        )

    [dblist] => Array
        (
            [dbtype] => Array
                (
                    [0] => test
                    [1] => dev
                    [2] => v1
                    [3] => release
                    [4] => online
                )

        )

)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,890评论 18 139
  • 方法一:System.Runtime.InteropServices 首先得创建一个读取ini配置文件的基类,创建...
    游戏开发小Y阅读 4,226评论 0 1
  • 组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://...
    Palomar阅读 1,599评论 0 6
  • ANNOVAR的安装 ANNOVAR网址 log in之后才能download,使用教育机构后缀的邮箱即可注册。 ...
    面面的徐爷阅读 23,106评论 1 26
  • 抡斧斫木 年复日 不知名来只知木 抡斧琢木 日复年 不识利来只识木 器成无人识匠人 匠人之器人人识 大匠无斧亦无器...
    行脚阿南阅读 431评论 0 3