2016-10-05 2 views
0

У меня есть файл css, который я пытаюсь манипулировать с помощью php. Так что если мой css похож на ...php regex, чтобы получить строки, начинающиеся с любого символа и заканчивающиеся на открытую скобку

.something { 
    display:none; 
    background: blue; 
} 

.somethingElse { 
    display:block; 
} 

Я хочу, чтобы получить массив имен классов. Так что мой массив будет выглядеть ...

['.something', '.somethingElse'] 

Это моя попытка ($homepage мой файл CSS) ...

$homepage = file_get_contents("style.css"); 
$regex = '/[\s\S]\K[^{]*(?=})/m'; 
preg_match_all($regex, $homepage, $matches); 

То, что я пытался сделать, это найти все строки, которые начинаются с любой характер и конец в открытой скобке {. Мое регулярное выражение все неправильно, что правильно?

+1

Try '' ~^\ ч * \ (? [^ \ П {] ​​*) \ с * {~ m''. Для анализа произвольного CSS используйте синтаксический анализатор CSS. См. [Анализ файла CSS с PHP] (http://stackoverflow.com/questions/3618381/parse-a-css-file-with-php). –

+0

Думаю, вам лучше будет работать с парсером CSS, написанным на PHP. –

+0

Как насчет нескольких имен классов для одного блока CSS? Что делать, если между ними есть имена или другие разные селекторы? – revo

ответ

1

Это должно отлично работать:

\.([\w]+)\s*{ 

Имя класса в группе # 1.

. Пример:

preg_match_all("/\.([\w]+)\s*{/", $homepage, $matches);