- var_dump: documentation ( source)
- preg_match_all: documentation ( source)
- explode: documentation ( source)
- preg_split: documentation ( source)
<?php
namespace Aydin;
class Directory { public $dir = ''; public $parts = []; } class Vhost { public $directories = []; }
$vhost ='
<Directory "/srv/httpd/htdocs/mydomain.com">
Options Indexes FollowSymLinks
AllowOverride All
Order deny,allow
Allow from 127.0.0.1
Allow from xxx.xxx.xxx.xxx
Allow from xxx.xxx.xxx.xxx
Deny from all
</Directory>
<Directory "/srv/httpd/htdocs/myseconddomain">
Options Indexes FollowSymLinks
AllowOverride All
Order deny,allow
Allow from 127.0.0.1
Allow from xxx.xxx.xxx.xxx
Allow from xxx.xxx.xxx.xxx
Deny from all
</Directory>
';
$matches = [];
$directory = preg_match_all('/<Directory "(.*")>([\s\S]*?)<\/Directory>/', $vhost, $matches, PREG_SET_ORDER);
$vhost = new Vhost;
foreach ($matches as $match) {
$dir = new Directory;
$dir->dir = $match[1];
//echo "Directory: " . $match[1] . "\n";
$lines = explode($match[2], "\n");
foreach ($lines as $line) {
$parts = preg_split('/\s+/', $line);
$dir->parts = $parts;
}
$vhost->directories[] = $dir;
}
var_dump($vhost);