2016-10-05 3 views
0

PHP를 사용하여 조작하려고하는 CSS 파일이 있습니다. 그래서 내 CSS가 ...임의의 문자로 시작하고 열린 중괄호로 끝나는 문자열을 얻는 PHP 정규식

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

.somethingElse { 
    display:block; 
} 

클래스 이름의 배열을 가져올 수 있기를 원합니다. 그래서 내 배열은 내가해야 할 노력은 무엇

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

어떤로 시작하는 모든 문자열을 찾을 수 있었다 ($homepage 내 CSS 파일입니다)

['.something', '.somethingElse'] 

내 시도 ... 같을 것이다 문자와 끝이 열린 괄호 {. 내 정규식은 모두 틀렸다. 올바른 방법은 무엇인가?

+1

시도 ''~^\ H * \ (? [^ \ n {*) \는 * {~ m''이야. 임의의 CSS를 구문 분석하려면 CSS 파서를 사용하십시오. [CSS 파일을 PHP로 파싱] (http://stackoverflow.com/questions/3618381/parse-a-css-file-with-php)을 참조하십시오. –

+0

PHP로 작성된 CSS 파서를 사용하는 것이 더 나을 것이라고 생각합니다. –

+0

하나의 CSS 블록에 대해 여러 개의 클래스 이름은 어떻게됩니까? ID 이름이나 다른 선택자가 그들 사이에 있으면 어떻게 될까요? – revo

답변

1

이 잘 작동해야합니다

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

클래스 이름은 그룹 # 1에 있습니다.

예 :.

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