function _acquia_spi_security_review_htaccess_parse in Acquia Connector 7.2
Same name and namespace in other branches
- 6.2 acquia_spi/security_review.inc \_acquia_spi_security_review_htaccess_parse()
- 7.3 acquia_spi/security_review.inc \_acquia_spi_security_review_htaccess_parse()
Helper function to parse .htaccess data into nested array.
Parameters
$htaccess string: .htaccess file content
Return value
array Array of parsed data. Nested sections converted into two-dimensional array.
1 call to _acquia_spi_security_review_htaccess_parse()
- _acquia_spi_security_review_htaccess_analyze in acquia_spi/
security_review.inc - Helper function to analyze .htaccess in specified directory.
File
- acquia_spi/
security_review.inc, line 602 - Stand-alone security checks and review system.
Code
function _acquia_spi_security_review_htaccess_parse($htaccess) {
$result = array();
// Remove full-line comments
$htaccess = preg_replace('/^\\s*#.*$/mui', '', $htaccess);
$htaccess = explode("\n", $htaccess);
$section = array();
$section_key = array();
foreach ($htaccess as $key => $value) {
$value = trim($value);
if ($value) {
// .htaccess section begin
if (preg_match('/^<([^\\s]+)\\s+(.+)>.*$/ui', $value, $regs)) {
$section[] = strtolower($regs[1]);
$section_key[] = strtolower($regs[1]) . '-' . strtolower($regs[2]);
}
elseif (count($section) && preg_match('/^<\\/' . preg_quote($section[count($section) - 1], '/') . '>.*$/ui', $value, $regs)) {
array_pop($section);
array_pop($section_key);
}
else {
$value = preg_replace(array(
'/\\s*#.+/ui',
'/\\s+/ui',
), array(
'',
' ',
), $value);
if (count($section)) {
$result[implode('-', $section_key)][] = $value;
}
else {
$result[] = $value;
}
}
}
}
return $result;
}