PHP:解析扩展名为.php的ini文件

时间:2016-06-09 15:28:13

标签: php regex ini

如何使用.php扩展名解析ini文件。例如 config.ini.php 下面是内容文件。

<?php
[Session]
SessionTimeout=1200
ActivityTimeout=600
CookieTimeout=0
SessionNameHandler=custom
Handler=SessionHandlerDB
?>

我试过 parse_ini_file 它无效。

这是我得到的错误警告:语法错误,意外END_OF_LINE,期待&#39; =&#39;

我正在使用一个框架,我无法删除PHP标记。

3 个答案:

答案 0 :(得分:2)

<?php
$configContent = file_get_contents('config.ini.php');
$iniContent = preg_replace('/<\?php|\?>/m', '', $configContent);
var_export(parse_ini_string($iniContent));

结果:

array (
  'SessionTimeout' => '1200',
  'ActivityTimeout' => '600',
  'CookieTimeout' => '0',
  'SessionNameHandler' => 'custom',
  'Handler' => 'SessionHandlerDB',
)

答案 1 :(得分:0)

如果您无法删除PHP标记,那么这是一种更好的方法:

<?php
return [
    'session' => [
        'SessionTimeout'     => 1200,
        'ActivityTimeout'    => 600,
        'CookieTimeout'      => 0,
        'SessionNameHandler' => 'custom',
        'Handler'            => 'SessionHandlerDB',
    ]
];

使用:

$config = require 'config.inc.php';

答案 2 :(得分:0)

我知道这已经超过 5 年了,但我想加上我的 2 美分。

我不知道为什么每个人都让 OP 在创建他们的 ini 文件作为 PHP 时如此困难。它增加了额外的安全性,因此即使用户知道文件的路径,也无法访问它。

为了回答 OP 的原始问题,我在自己自制的 CMS 中执行此操作,并且它与 let PORT = 80 console.log('The port is ' + PORT); console.log(`The port is ${PORT}`); 配合得很好:

parse_ini_file

只需将 ini 代码块注释掉,并在第一行前面加上分号。 ini 将 PHP 视为注释,而 PHP 将 ini 视为注释,而 ;<?php die(); /* [Session] SessionTimeout=1200 ActivityTimeout=600 CookieTimeout=0 SessionNameHandler=custom Handler=SessionHandlerDB */ ?> 仍然可以读取它。为了获得更高的安全性,您可以添加 parse_ini_file