免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2758 | 回复: 10
打印 上一主题 下一主题

自写的解析windows下ini文件的类,大家评评 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-07 16:49 |只看该作者 |倒序浏览
<?php
class ini_parser
{
        // $last_sect : used to special the last parsed section name.
        private $last_sect;
        function parse (&$path, &$store)
        {
                if (file_exists($path)) {
                        $read = @file($path);
                        foreach ($read as $value) {
                                if (!$this->is_comment ($value)) {
                                        if ($this->is_section($value)) {
                                                // parse such section name.
                                                $value = trim($value, "[");
                                                $value = str_replace ("]", "", $value);
                                                if (!$this->section_exist ($value, $store)) {
                                                        $this->last_sect = $value;
                                                }
                                        } else {
                                                // parse contents.
                                                $exp = explode("=", $value);
                                                $store[$this->last_sect][$exp[0]] = $exp[1];
                                        }
                                }
                        }
                }
        }
        private function is_comment (&$str)
        {
                if (isset($str))
                {
                        return (';' == $str[0] || '#' == $str[0]);
                }
                return false;
        }
        private function is_section (&$str)
        {
                $check = trim($str);
                return ($str[0] == '[' && $check[strlen ($check) - 1] == ']');
        }
        private function section_exist (&$sect, &$coll)
        {
                if (is_array(&$coll))
                {
                        return array_key_exists($sect, $coll);
                }
                return false;
        }
}
?>
接触php不久,其中有不妥的地方还请指教。不知该类在实用时怎样。
交各php爱好者:
QQ:9753114

论坛徽章:
0
2 [报告]
发表于 2006-09-07 17:02 |只看该作者
parse_ini_file()

论坛徽章:
0
3 [报告]
发表于 2006-09-08 22:43 |只看该作者
parse_ini_file有问题,有些情况不能正确解析文件

论坛徽章:
0
4 [报告]
发表于 2006-09-09 06:18 |只看该作者
没有做字串安全检查。

论坛徽章:
0
5 [报告]
发表于 2006-09-09 18:29 |只看该作者
原帖由 langue 于 2006-9-9 06:18 发表
没有做字串安全检查。

字符安全检查指的是?譬如?

论坛徽章:
0
6 [报告]
发表于 2006-09-09 18:31 |只看该作者
类中在做str_replace ("]", "", $value)时,会将字符串截断

论坛徽章:
0
7 [报告]
发表于 2006-09-10 19:55 |只看该作者
不错,我是新手,想问下php解析ini有什么用途

论坛徽章:
0
8 [报告]
发表于 2006-09-10 19:57 |只看该作者
听说PDO可以把ini文件当作db打开的,你可以参照一下

字符安全检查指的是?譬如?


防止恶意字符串导致崩溃或者——更坏的可能就是,产生大量的安全隐患。注意在'\0'的地方严密检查。

[ 本帖最后由 langue 于 2006-9-10 19:59 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-09-10 20:55 |只看该作者
原帖由 fnet 于 2006-9-10 19:55 发表
不错,我是新手,想问下php解析ini有什么用途

其实就是将程序中的信息参数化到文件中。因为在windows下编程都是通过ini文件(文本文件)进行配置。

论坛徽章:
0
10 [报告]
发表于 2006-09-10 20:57 |只看该作者
原帖由 langue 于 2006-9-10 19:57 发表
听说PDO可以把ini文件当作db打开的,你可以参照一下



防止恶意字符串导致崩溃或者——更坏的可能就是,产生大量的安全隐患。注意在'\0'的地方严密检查。

pdo是啥?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP