2013-01-13 4 views
0

제거 다음 PHP 정규식 모든 빈 태그를 제외한 모든 빈 태그를 제거지정된

#<[^\/>]*>([\s]?)*<\/[^>]*>#u 

내가 일치하지 않는 빈 태그를 제거하려면 :

<div style="clear:both"></div> 

을 해봤 :

#^(<div style="clear:both"></div>)<[^\/>]*>([\s]?)*<\/[^>]*>#u 

...하지만 작동하지 않았습니다.

부정을 어떻게 추가합니까?

<(?!div\s+style=(?:"[^"]*?\bclear:\s*both\b[^"]*"|'[^']*?\bclear:\s*both\b[^']*')\s*>\s*</div>).*?>\s*</.*?> 

너무 케이스 - 무감각 플래그를 사용하십시오 : 누락 된 종료 태그가없는 잘 형성된다고 가정

+3

HTML을 정규식으로 구문 분석/처리하지 않습니다. – PeeHaa

+0

'^'을 혼란스럽게합니다. 제목이나 줄의 시작을 의미합니다. 대신 어설 션'(?! ...)'이 필요합니다. – mario

+0

HTML은 일반 언어가 아닙니다. 그리고 어떤 상황에서는 종결 태그가 * 누락 * * 될 수 있습니다 *. 즉, 특정 종료 태그가 누락 된 경우에도 HTML 문서는 올바른 형식으로 간주 될 수 있습니다. 이렇게하면 빈 태그를 검색하기가 더 어려워집니다. –

답변

3

,이 트릭을 할해야합니다. 그래도 나는 그것에 대해 조언 할 것이다.

편집 : 편집 한 내용을 테스트하지는 않았지만 조금 더 철저히 조사했습니다.

+0

어떻게 정규식과 결합합니까? – Maximus

+0

@jason, 일치해야하는 것과 일치하지 않아야하는 몇 가지 예에 대한 목록을 제공 하시겠습니까? 대부분의 빈 태그와 일치하는 것 이외의 작업을 정확히하려는 것은 확실하지 않습니다. –

+1

너무 복잡해, 정규식으로 HTML을 파싱하지 마라. – slier

관련 문제