2016-12-13 1 views
0
html로는 다음과 같습니다

내에서 스타일을 제거합니다 PHP HTML은 모든 일부를 제외하고 strip_tags와 태그

$html = 'SOME TEXT<p style="border-top: 0.0px;border-right: 0.0px;vertical-align: baseline;border-bottom: 0.0px;color: #000000;padding-bottom: 0.0px;padding-top: 0.0px;padding-left: 0.0px;margin: 0.0px;border-left: 0.0px;padding-right: 0.0px;background-color: #ffffff;">SOME TEXT'; 

나는 <p>을 제외한 모든 것을 제거 strip_tags($html, '<p>');을 시도하지만 태그의 모든 스타일 요소를 유지합니다.

나는 위의 단지 <p>

가장 좋은 방법은 무엇으로 대체 할?

감사합니다.

+1

이 경우 regexp가 필요합니다. –

답변

1

가장 간단한 해결책은 preg_replace()을 기반으로하는 것입니다.

$html = 'SOME TEXT<p style="border-top: 0.0px;border-right: 0.0px;vertical-align: baseline;border-bottom: 0.0px;color: #000000;padding-bottom: 0.0px;padding-top: 0.0px;padding-left: 0.0px;margin: 0.0px;border-left: 0.0px;padding-right: 0.0px;background-color: #ffffff;">SOME TEXT'; 
$html = strip_tags($html, '<p>'); 
$html = preg_replace('/\sstyle=["\'][A-Za-z0-9-:\s.;#]{1,}["\']/', '', $html); 

항상 그렇듯이 정규식으로 html을 구문 분석 할 때는 항상 조심해야합니다. 예를 들어, 어떤 이유로 든 <p /> 태그 안의 텍스트에 CSS 스타일과 같은 형식이 포함 된 경우이 작업은 실패합니다. (<p>If I typed style="color:red" inside the tags, it would also be removed</p>과 같은 것)

더 나은 것을 만들기위한 다음 단계는 실제로 DOMDocument class을 사용하여 XML 문서로 문자열을 구문 분석하는 것입니다. 그것은 당신이 성취하고자하는 특징 집합이 얼마나 강건한가에 달려 있습니다. 그러나이 방법은 예상치 못한 방식으로 문자열을 변경할 수 있습니다. 예를 들어 문자열을 DOMDocument로 구문 분석하면 </p> 태그가 추가됩니다. 그런 종류의 검증은 당신에게 유용 할 수도 있고 그렇지 않을 수도 있습니다.