2010-04-16 2 views
0

이 질문이 비슷한 경우에 관련하여 대부분의 인라인 스타일과 속성을 제거 Removing inline styles using php즉, PHP

솔루션이 제거 즉하지 않습니다 <font face="Tahoma" size="4">

을하지만이 전 인라인 스타일의 혼합 가방을 가정 해 봅시다 이 같은 속성 : 정규 표현식이 결과를 달성하기 위해 필요한 것은

<ul style="padding: 5px; margin: 5px;"> 
    <li style="padding: 2px;"><div style="border:2px solid green;">Some text</div></li> 
    <li style="padding: 2px;"><font face="arial,helvetica,sans-serif" size="2">Some text</font></li> 
    <li style="padding: 2px;"><font face="arial,helvetica,sans-serif" size="2">Some text</font></li> 
</ul> 

?

<ul> 
    <li><div>Some text</div></li> 
    <li><font>Some text</font></li> 
    <li><font>Some text</font></li> 
</ul> 

답변

5

평소처럼 정규 표현식은 HTML 구문 분석에 이상적이지 않습니다. 실제 HTML 파서를 사용하는 것이 더 나을 수도 있습니다. 말했다

...

$noattributes = preg_replace('/<(\w+) [^>]+>/', '<$1>', $original); 

은 ... 속성하여 w/o 해당 태그의 속성을 포함하는 모든 오프닝 태그를 대체합니다. 그러나 실수로 다른 태그의 인용 된 속성 내에 포함 된 "태그"를 누를 수도 있습니다. 따라서 실제로 태그 자체가 아닙니다. 자체 닫는 태그에 태그 이름과 슬래시 사이에 공백이 없으면 피할 수 있지만 자체 닫는 태그 (<br /><br>으로 바꿉니다)로 인해 문제가 발생합니다.

+0

좋아요? $ formatted = preg_replace ('<(\w+) [^> +,'<$1> ', $ text); – Coreus

+0

내 편집 된 버전보기 당신은 정규 표현식을 구분해야한다는 것을 기억해야합니다. – Amber

+0

동의합니다. HTML 구문 분석을 사용하는 것이 더 좋습니다 – TravisO