2012-03-06 3 views
0

예를 들어, 나는 다음과 같은 규칙과 test.css이PHP를 사용하여 중복 CSS 규칙을 필터링하는 가장 빠른 방법은 무엇입니까?

.fs24 { font-size: 24px; } 
.fc77777 { color: #777777; } 
.fs24 { font-size: 20px; } 
.fc77777 { color: #787878; } 

난, PHP는 방법은 당신이 볼 수있는이 입력 및 출력

.fs24 { font-size: 24px; } 
.fc77777 { color: #777777; } 

을 할 수 있도록되어 원하는 것은 , 나는 그들의 선택자에 의해 중복 CSS 규칙을 탐지하고 걸러 내고 싶다. 3 명 소재지가 보유해야합니다 :

  1. 필터링 된 CSS 규칙이 하나 라이너/멀티 라인 일 수있다, 나는 모든 신경은 필터링해야하며, 자신의 선택만큼 전에 존재했다!
  2. 거기에 많은 문자열 조작 기법이 있는데, 내가 알아 내려고 시도한 것은 이것을 할 수있는 가장 빠른 방법입니다. 왜냐하면 내가 생산중인 CSS가 꽤 커야합니다 (모든 CSS 파일을 병합하려고합니다). 하나 및 필터링 된 모든 중복 규칙 제외)
  3. LIFO, Last In First Out, 즉 필터링되지 않는 것은 첫 번째 CSS 규칙이며 다른 모든 CSS 규칙은 선택자이 완전히 제거됩니다.
+0

1. 다른 선택자가 같은 요소 2를 가리킬 수 있습니다. 당신이 시도한 것이 있습니까? 아니면 우리가 당신의 일을하기를 원하십니까? – zerkms

+1

이 모든 기능을 갖춘 기존 브라우저 개발자 도구를 사용하는 것이 좋습니다. CSS에서 캐스 캐이 딩 (cascading)은 작은 프라이입니다 (그 이유는 바로 그 이름입니다). – BoltClock

+0

@ Zerkms, 달성하기 위해 노력하고 무엇 1 css 파일에 10 css 파일을 축소하는 것입니다 및 서버에 중복 선택기 아래로 트리밍하려는 경우 ... – M4G1C14N

답변

0

내 접근 방식은 입력 파일을 구문 분석하고 선택기를 사전 키로 사용하여 규칙 사전을 작성하는 것입니다. 각 규칙에 대해 선택자가 사전에 있는지 확인하십시오. 그런 다음 규칙을 무시하면 새 규칙을 사전에 추가하십시오.

입력을 구문 분석했으면 사전의 내용에서 새 .css 파일을 만듭니다.

여러 셀렉터가있는 규칙에주의해야합니다. 아마도 각 선택기에 대해 하나의 사전 항목을 만들지 만 추가 처리를하지 않으면 출력 파일에 코드가 중복 될 수 있습니다.

+0

입력 해 주셔서 감사합니다 :). 한 가지 질문이 제기됩니다. 사전 입력을 분석하는 가장 빠른 방법은 무엇입니까? Preg_match를 사용하는 것을 제외하고 다른 방법을 제안 하시겠습니까? (preg_match를 사용하는 것 외에는 더 좋은 질문이 될 수있는 다른 방법이 있습니까?) : P – M4G1C14N

+0

Preg Match를 사용하여 다음 $ pattern = '/ (? P . *) { {}] *)}/'; 올바른 배열을 출력하려면 preg_match_all ($ pattern, $ input, $ matches); 그건 나중에 사전을 만드는 데 사용할 수 있습니다 ...하지만 주요 질문은 분명히 남아있다, 이것은 정말 빠른 방법입니까? CSS의 양이 하나의 CSS 파일로 분석되어야하기 때문에 나는이 문제에 정말로 관심이 있습니다. 프로젝트에서 엄청난 것입니다. 가장 효과적인 방법 (읽기 : 가장 빠름)을 찾아내는 것이 내 임무입니다. 당신이 생각하는 것보다 내가 잠재적으로 더 빠를 수있는 것 : D – M4G1C14N

0

사용이 :

.fs24 { font-size: 24px !important;} 
.fc77777 { color: #777777 !important;} 
+0

아니오 ... 그것은 css를 전혀 다듬지 않습니다 ...가능한 한 작은 CSS를 만들고 싶습니다. 따라서 서버에서 중복을 제거하는 것이 중요합니다. :) – M4G1C14N