2016-07-21 6 views
0

Я пытаюсь получить весь CSS-файл с помощью сжатия. Он отлично работает, но я хочу удалить пустые селектора CSS. Этот файл процедурно генерируется так он оставляет позади некоторых пустых тегов и вместо того, чтобы удалить их все вручную:Удаление пустого селектора CSS с PHP preg_replace

$buffer = str_replace('#content>#columns>#article{}', '', $buffer); 
$buffer = str_replace('.menuDeeper88{}', '', $buffer); 

Я попытался удалить их, как это:

$buffer = preg_replace('/\}[.*?]\{\}/', '\}', $buffer); 

который я предположил бы, что идет как это (только уточнение):

Replace any case of '}ANY_CHARACTERS{}' with '' 

Но метод preg_replace не работает. Я надеялся, что кто-то может помочь мне заставить его работать.

Благодарю вас заранее.

ответ

1

Вы можете использовать этот подход:

$css = "#content>#columnsA{min‐width: 500px;}#articleA{ }.menuUpper88{}#content>#columnsB>{min‐width: 700px;}#articleB{}.menuUpper88{}.header {background-color: #fff;background-image: url(image.gif);background-repeat: no-repeat;background-position: top left;}"; 

$css_splitted_by_closed_bracket = preg_split("/\s*\}/i", $css); 

function get_css_without_empty_selector($data) 
{ 
    $result = ""; 
    foreach ($data as $item) { 
     if($item != "" && substr($item, -1) != '{') { 
      $result .= $item . "}"; 
     } 
    } 
    return $result; 
} 

get_css_without_empty_selector($css_splitted_by_closed_bracket); 

Запуск код здесь: https://3v4l.org/9Cskr