2011-05-01 6 views
0


strip_tags을 사용하여 HTML을 텍스트로 변환하는 데 문제가 있습니다.
HTML 코드는PHP 스트립 홀수 html 태그

<img style="max-width: 60px; max-height: 90px; 
      width: expression(this.width > 60 ? 60: true); 
      height: expression(this.height > 90 ? 90: true);" 
    src="image.php?s=d377256dd97b17e9bf0b1182743c95c2&amp;u=1&amp;dateline=1215813557" 
    alt="DailyFX Forum Administrator's Avatar" /> 

strip_tags 내가 preg_replace를 사용하여 코드를 작성 싶지만 마지막 >이 아닌 스타일로 > 일치하지 않는 방법, 잘 작동하지 않을 수 있습니다. 너 나 좀 도와 줄 수있어?

감사
게리

+1

관련 없음 : 이것은 매우 이상한 표현입니다 :'height : expression (this.height> 90? 90 : true);'이제 가능 :'height : true;'?? 'height : expression (this.height> 90? 90 : this.height);'사용한다면'max-height : 90px; '를 사용하십시오. – Rudie

+0

@Rudie이 CSS 표현은 주위를 둘러싼 것이라고 생각합니다. IE6의 한계 ('max-height'속성에 대한 지원 없음). – alex

+0

IE6? IE6는 무엇입니까? IE6을 사용하는 경우, 컴퓨터를 고장 나게하고 파기하고 파괴하는 엉뚱한 읽을 수없는 웹 사이트가 있어야합니다. – Rudie

답변

1

마크 업이 유효하지 않으므로 strip_tags 또는 다른 마크 업 파서를 사용하기 전에 마크 업을 삭제해야합니다. 이 특정 문제에 대해 시도해 볼 수 있습니다 : preg_replace("expression([^)]+)", "", $your_html) 유효한 마크 업을 가지려면 인라인 스타일 대신 스타일 시트를 사용하는 것이 좋습니다.

+0

예. 짧은 지름길이 없습니다. strip_tags를 사용하기 전에 위생 처리하는 유일한 방법입니다. preg_replace (array (" '/ * *. *? <\/style>/mi')," ", $ your_html) –

0

는 여기에 정규식 (복잡하지 적어도 하나) 그것을 잘라하지 않습니다 완벽한 예입니다.

DOM 파서를 사용하십시오.