Strip_tags () 함수의 함수는 문자열에서 모든 HTML 및 PHP 태그를 제거하는 것입니다. 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">null</span></span><span> </span><span><span class="hljs-variable">$allowable_tags</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$ str : 처리 할 문자열.
$ allowable_tags : 보유 할 수있는 태그를 지정하는 선택적 매개 변수. 지정되지 않으면 모든 태그가 기본적으로 제거됩니다.
예:
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'<p>Hello <b>world</b>!</p>'</span></span><span>;
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$clean_text</span></span><span>; </span><span><span class="hljs-comment">// 산출:Hello world!</span></span><span>
</span></span>
위에서 볼 수 있듯이 Strip_tags ()는 기본적으로 모든 HTML 태그를 제거합니다. 따라서 문자열에 중첩 태그가 포함되어 있으면 제거가 올바르고 오류가 없는지 어떻게해야합니까?
복잡한 HTML 구조를 다룰 때 Strip_tags () 의 동작에는 특별한주의가 필요합니다. HTML 구조가 표준화되지 않았거나 태그가 너무 깊게 중첩되면 Strip_tags ()를 사용하면 예상 결과를 직접 달성하지 못할 수 있습니다. 예를 들어, 중첩 태그로 인해 일부 태그가 완전히 제거되지 않거나 처리 된 문자열 형식은 예상대로 아닙니다.
중첩 된 HTML 태그는 때때로 사양을 준수하지 않을 수 있으므로 Strip_tags ()가 제대로 작동하지 않을 수 있습니다. 이 문제를 해결하려면 먼저 HTML 코드가 사양인지 확인해야합니다. HTML 구조는 PHP의 DomDocument 클래스를 사용하여로드 및 정규화 할 수 있습니다.
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'<div><b>Hello <i>world</i></b>!</div>'</span></span><span>;
</span><span><span class="hljs-variable">$dom</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DOMDocument</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">libxml_use_internal_errors</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// 소홀히 하다HTML형식의 오류</span></span><span>
</span><span><span class="hljs-variable">$dom</span></span><span>-></span><span><span class="hljs-title function_ invoke__">loadHTML</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>);
</span><span><span class="hljs-variable">$clean_html</span></span><span> = </span><span><span class="hljs-variable">$dom</span></span><span>-></span><span><span class="hljs-title function_ invoke__">saveHTML</span></span><span>();
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$clean_html</span></span><span>); </span><span><span class="hljs-comment">// 사용strip_tags태그를 제거하십시오</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$clean_text</span></span><span>; </span><span><span class="hljs-comment">// 산출:Hello world!</span></span><span>
</span></span>
DomDocument를 통해 먼저 HTML 코드를로드하고 복구 한 다음 Strip_Tags () 함수를 사용하여 태그를 정리할 수 있습니다.
특정 태그 만 유지 해야하는 경우 두 번째 매개 변수를 통해 유지할 수있는 태그를 지정할 수 있습니다. 예를 들어, <b> 및 <i> 태그 만 유지하려면 다른 모든 태그를 제거하십시오.
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'<p><b>Hello <i>world</i>!</b></p>'</span></span><span>;
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-string">'<b><i>'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$clean_text</span></span><span>; </span><span><span class="hljs-comment">// 산출:Hello <i>world</i>!</span></span><span>
</span></span>
이러한 방식으로 Strip_tags ()는 허용 가능한 목록에없는 모든 태그를 제거하며 다른 태그의 간섭을 피하기 위해 <b> 및 <i> 태그 만 유지됩니다.
때로는 strip_tags () 에만 의존하는 것은 특히 복잡한 HTML 구조를 다룰 때 충분하지 않을 수 있습니다. 이 시점에서 정규 표현식과 함께 문자열을 더욱 정리하고 중첩 태그 또는 기타 불필요한 부품을 제거 할 수 있습니다.
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'<div><b>Hello <i>world</i></b>!</div>'</span></span><span>;
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-string">'<b><i>'</span></span><span>); </span><span><span class="hljs-comment">// 먼저 원치 않는 태그를 제거하십시오</span></span><span>
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/<[^>]+>/'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-variable">$clean_text</span></span><span>); </span><span><span class="hljs-comment">// 再사용正则移除剩余的HTML상표</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$clean_text</span></span><span>; </span><span><span class="hljs-comment">// 산출:Hello world!</span></span><span>
</span></span>
이 방법은 태그를 청소하는 과정에서 더 세련되게 만들 수 있습니다.
관련 태그:
HTML