文章来源:PHP开发学习门户

地址:http://www.phpthinking.com/archives/587

在PHP站点开发的过程中,往往会用到读取ini參数配置文件,比方须要訪问一些复杂的借口,就能够直接在參数配置文件中面改动參数,然后再php脚本里面直接读取运行。而php有一个能够直接读取ini配置文件的函数parse_ini_file(),并以数组的形式返回。以下具体解说一下採用PHP内置函数parse_ini_file,读取ini配置文件。

參数说明:array parse_ini_file ( string $filename [, bool $process_sections ] ) parse_ini_file() 加载一个由 filename 指定的 ini 文件,返回一个联合数组。假设将 process_sections 參数设为 TRUE,将得到一个多维数组,包含了配置文件里每一节的名称和设置。process_sections 的默认值是 FALSE,返回将每一节合并后的数组。ini文件凝视用;符号

以下開始实例具体解释:

config.ini(能够设置为其他类型后缀名)例如以下:

01 ;
This is a sample configuration file
02 ;
Comments start with 
';'as in
php.ini
03  
04 [first_section]
05 one
= 1
06 five
= 5
07 animal
= BIRD
08  
09 [second_section]
10 path
"/usr/local/bin"
11 URL
"http://www.example.com/~username"
12  
13 [third_section]
14 phpversion[]
"5.0"
15 phpversion[]
"5.1"
16 phpversion[]
"5.2"
17 phpversion[]
"5.3"

PHP脚本測试代码,例如以下:

1 <?php
2 $ini_array parse_ini_file("config.ini");
3 print_r($ini_array);
4  
5 //
Parse with sections
6 $ini_array parse_ini_file("config.ini",
true);
7 print_r($ini_array);

执行结果例如以下:

01 Array
02 (
03 [one]
=> 1
04 [five]
=> 5
05 [animal]
=> BIRD
06 [path]
=> /usr/local/bin
07 [URL]
=> http:
//www.9streets.cn
08 )
09 Array
10 (
11 [test]
=> Array
12 (
13 [one]
=> 1
14 [five]
=> 5
15 [animal]
=> BIRD
16 )
17  
18 [beta]
=> Array
19 (
20 [path]
=> /usr/local/bin
21 [URL]
=> http:
//www.9streets.cn
22 )
23  
24 )

parse_ini_file()函数,无法解析ini文件里的多维数组形式,这就须要自己手动增加以下的parse_ini_file_multi()方法,来解析大于三维数组的ini文件。特别说明的是,在PHP官网的手冊中的parse_ini_file_multi()存在一个错误,我在代码中已经修复。

只是在笔者程序开发的过程中,遇到了还有一个难题,我须要把parse_ini_file()函数解析后的多维数组的键值对,放到接口的url中调用,这种话,多维数组就出现了问题,即便能够实现效果也会面临很臃肿的遍历过程。

在这里,笔者採用了第二种方法,将ini配置文件里的多维数组的形式,均转化为一维数组,也就是“=”前面的变量,直接以类型数组样式的字符串赋值,“=”后面的值也就是多维数组的终于取值。

该功能的详细实现和操作,请查看我的 个人网址:http://www.phpthinking.com/archives/587

实战parse_ini_file()及扩展函数解析ini文件完整版的更多相关文章

  1. shiro解析ini文件

    来吧,看看shiro是怎么解析ini文件的,这里假设ini文件在classpath下,名字叫做shiro.ini Factory<org.apache.shiro.mgt.SecurityMan ...

  2. boost::property_tree读取解析ini文件--推荐

    boost::property_tree读取解析ini文件 #include "stdafx.h" #include <iostream> #include <b ...

  3. python解析ini文件

    python解析ini文件 使用configparser - Configuration file parser sections() add_section(section) has_section ...

  4. 解决ini-parser解析ini文件中文乱码问题

    rickyah/ini-parser 是一个.net 平台解析ini文件的库,当ini文件中含有中文字符时会乱码. 解决:将文件通过Editplus 等文本编辑工具保存为 utf-8 + bom 格式 ...

  5. C++ 中使用boost::property_tree读取解析ini文件

    boost 官网 http://www.boost.org/ 下载页面 http://sourceforge.net/projects/boost/files/boost/1.53.0/ 我下载的是  ...

  6. Djanjo 的app 模板路径 静态文件 完整版登录 新手三件套 以及orm

    一: django中app的概念: 一个项目可以包含多个应用(app,类似于模块,主页打开多个模块就是多个app) 创建了app,要在配置文件中注册 二:模板路径配置: 1 templates文件夹 ...

  7. 状态机学习(二)解析INI文件

    题目来自<系统程序员成长计划> 作者:李先静. 状态变化如下 #include <string> #include <iostream> using namespa ...

  8. 《开源分享2》:《开源框架实战宝典电子书V1.0.0》完整版!

    经过一个多月的整理,<J2EE开源框架实战宝典>--Tiny文档PDF电子书開始发放,共同拥有将近600页.为喜爱Tiny.热爱Java开源框架的朋友提供更加体贴的文档服务! 下载地址:h ...

  9. R语言实战(第2版)PDF完整版带书签目录

    <R语言实战2>PDF+源代码 下载:https://pan.baidu.com/s/1gP_16Xq9eVmLJ1yOsWD9FA 提取码:l8dx 分享更多python数据分析相关电子 ...

随机推荐

  1. QT 打开文件对话框汇总

    Qstring fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ",  tr( ...

  2. NTVS:把Visual Studio变成Node.js IDE 的工具

    NTVS(Node.js Tools for Visual Studio) 运行于VS2012或者VS2013.一些node.js的爱好者已经从PTVS(Python Tools for Visual ...

  3. Objective C Runtime 开发介绍

    简介 Objective c 语言尽可能的把决定从编译推迟到链接到运行时.只要可能,它就会动态的处理事情.这就意味着它不仅仅需要一个编译器,也需要一个运行时系统来执行变异好的代码.运行时系统就好像是O ...

  4. OAuth在WebApi

    OAuth在WebApi中的使用,前后台分离的调用方式 前段时间由于公司架构服务层向WebApi转换,就研究了OAuth在WebApi中的使用,这中间遇到了很多坑,在此记录一下OAuth的正确使用方式 ...

  5. 证明 poj 1014 模优化修剪,部分递归 有错误

    这个问题是存在做.我发现即使是可行的一个问题,但不一定正确. 大部分数据疲软,因为主题. id=1014">poj 1014 Dividing 题目大意:有6堆石头,权重分别为1 2 ...

  6. Python调用微博API

    上头叫通过微博ID获取用户公布过的历史微博内容,于是研究了下新浪微博提供的API 1 首先在微博开放中心下"创建应用"创建一个应用,应用信息那些随便填,填写完成后,不须要提交审核, ...

  7. 【TCP/IP 合约】 TCP/IP 基金会

    总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后開始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...

  8. OpenCV300 CMake生成project在项目过程中的问题

    2015年6一个月4日本.OpenCV官网上面给出了最新版本号OpenCV.这是:3.0.0版本号,http://opencv.org/ 使用CMake它产生VS2010project流程.我遇到了一 ...

  9. Java版网络爬虫基础(转)

    网络爬虫不仅仅可以爬取网站的网页,图片,甚至可以实现抢票功能,网上抢购,机票查询等.这几天看了点基础,记录下来. 网页的关系可以看做是一张很大的图,图的遍历可以分为深度优先和广度优先.网络爬虫采取的广 ...

  10. Android手机定位技术的发展

    基于以下三种方式的移动位置:1. 网络位置 :2. 基站定位. 3. GPS定位 1 网络位置 前提是连接到网络:Wifi.3G.2G 到达IP址  比如:彩虹版QQ,珊瑚虫版QQ,就有一个功能显示对 ...