使用PHP解析.htaccess文件

Son*_*nny 10 php .htaccess pear parsing zend-framework

我正在使用Zend Framework,我使用了.htaccess一些设置.我现在正在编写用于调度的命令行脚本(例如cron).命令行脚本不查看该.htaccess文件,因为它们不是由Apache提供的.我想解析.htaccess我的脚本来检索一些设置.以下是我特别感兴趣的专栏:

SetEnv APPLICATION_ENV development

php_value date.timezone America/New_York
Run Code Online (Sandbox Code Playgroud)

我注意到了PEAR File_HtAccess包,但它似乎只解决了.htaccess文件的身份验证部分.


解决方案:(由于Bamieater的信用)

echo 调试输出的语句,从工作代码中删除.

$htaccess = file(realpath(dirname(__FILE__)) . '/.htaccess');
echo '<pre>';
foreach ($htaccess as $line) {
    if (preg_match('/^\s*SetEnv\s+APPLICATION_ENV\s+(.*?)\s*$/', trim($line), $matches)) {
        defined('APPLICATION_ENV') || define('APPLICATION_ENV', $matches[1]);
        echo APPLICATION_ENV . PHP_EOL;
    } elseif (preg_match('/^\s*php_(?:admin_)?value\s+date\.timezone\s+(.*?)\s*$/', $line, $matches)) {
        date_default_timezone_set($matches[1]);
        echo date_default_timezone_get() . PHP_EOL;
    }
}
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)

Bam*_*ter 6

每行读取.htaccess文件并使用正则表达式访问数据.

例如这样的事情:

$line = "php_value date.timezone America/New_York";
$pattern = "@^php_value date.timezone (.*)$@";

if(preg_match($pattern,$line,$matches))
{
    print_r($matches);
}
Run Code Online (Sandbox Code Playgroud)