현재 위치: > 최신 기사 목록> Strip_tags 기능을 사용하여 태그 간섭을 피하기 위해 중첩 된 HTML 태그가 포함 된 문자열을 처리하는 방법은 무엇입니까?

Strip_tags 기능을 사용하여 태그 간섭을 피하기 위해 중첩 된 HTML 태그가 포함 된 문자열을 처리하는 방법은 무엇입니까?

gitbox 2025-06-22

strip_tags () 함수의 기본 사용

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">'&lt;p&gt;Hello &lt;b&gt;world&lt;/b&gt;!&lt;/p&gt;'</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 태그를 처리하기위한 팁

복잡한 HTML 구조를 다룰 때 Strip_tags () 의 동작에는 특별한주의가 필요합니다. HTML 구조가 표준화되지 않았거나 태그가 너무 깊게 중첩되면 Strip_tags ()를 사용하면 예상 결과를 직접 달성하지 못할 수 있습니다. 예를 들어, 중첩 태그로 인해 일부 태그가 완전히 제거되지 않거나 처리 된 문자열 형식은 예상대로 아닙니다.

1. HTML 태그 구조 사양을 확인하십시오

중첩 된 HTML 태그는 때때로 사양을 준수하지 않을 수 있으므로 Strip_tags ()가 제대로 작동하지 않을 수 있습니다. 이 문제를 해결하려면 먼저 HTML 코드가 사양인지 확인해야합니다. HTML 구조는 PHP의 DomDocument 클래스를 사용하여로드 및 정규화 할 수 있습니다.

 <span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'&lt;div&gt;&lt;b&gt;Hello &lt;i&gt;world&lt;/i&gt;&lt;/b&gt;!&lt;/div&gt;'</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>-&gt;</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>-&gt;</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 () 함수를 사용하여 태그를 정리할 수 있습니다.

2. 일부 태그를 유지하십시오

특정 태그 만 유지 해야하는 경우 두 번째 매개 변수를 통해 유지할 수있는 태그를 지정할 수 있습니다. 예를 들어, <b><i> 태그 만 유지하려면 다른 모든 태그를 제거하십시오.

 <span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'&lt;p&gt;&lt;b&gt;Hello &lt;i&gt;world&lt;/i&gt;!&lt;/b&gt;&lt;/p&gt;'</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">'&lt;b&gt;&lt;i&gt;'</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 &lt;i&gt;world&lt;/i&gt;!</span></span><span>
</span></span>

이러한 방식으로 Strip_tags ()는 허용 가능한 목록에없는 모든 태그를 제거하며 다른 태그의 간섭을 피하기 위해 <b><i> 태그 만 유지됩니다.

3. 일반 표현식과 함께 중복 태그를 필터합니다

때로는 strip_tags () 에만 의존하는 것은 특히 복잡한 HTML 구조를 다룰 때 충분하지 않을 수 있습니다. 이 시점에서 정규 표현식과 함께 문자열을 더욱 정리하고 중첩 태그 또는 기타 불필요한 부품을 제거 할 수 있습니다.

 <span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'&lt;div&gt;&lt;b&gt;Hello &lt;i&gt;world&lt;/i&gt;&lt;/b&gt;!&lt;/div&gt;'</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">'&lt;b&gt;&lt;i&gt;'</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">'/&lt;[^&gt;]+&gt;/'</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