mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/9646] Honor CSS comments in @import statements
Add a basic CSS comment parser that allows comments to prevent loading an @import statement. For simplicity, only whitespace is allowed between /* and the @import. Also adjust regex to not parse improper quotation marks. PHPBB3-9646 PHPBB3-8169
This commit is contained in:
parent
64e6faa877
commit
c3a5fd30ee
1 changed files with 10 additions and 2 deletions
|
@ -2531,13 +2531,21 @@ parse_css_file = {PARSE_CSS_FILE}
|
|||
|
||||
// Match CSS imports
|
||||
$matches = array();
|
||||
preg_match_all('/@import url\(["\'](.*)["\']\);/i', $stylesheet, $matches);
|
||||
preg_match_all('/@import url\((["\'])(.*)\1\);/i', $stylesheet, $matches);
|
||||
|
||||
// remove commented stylesheets (very simple parser, allows only whitespace
|
||||
// around an @import statement)
|
||||
preg_match_all('#/\*\s*@import url\((["\'])(.*)\1\);\s\*/#i', $stylesheet, $commented);
|
||||
$matches[2] = array_diff($matches[2], $commented[2]);
|
||||
|
||||
if (sizeof($matches))
|
||||
{
|
||||
foreach ($matches[0] as $idx => $match)
|
||||
{
|
||||
$stylesheet = str_replace($match, acp_styles::load_css_file($theme_row['theme_path'], $matches[1][$idx]), $stylesheet);
|
||||
if (isset($matches[2][$idx]))
|
||||
{
|
||||
$stylesheet = str_replace($match, acp_styles::load_css_file($theme_row['theme_path'], $matches[2][$idx]), $stylesheet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue