현재 위치: > 최신 기사 목록> preg_replace와 함께 Strip_tags를 사용하는 경우 사용자 정의 태그를 필터링하고 처리하는 방법은 무엇입니까?

preg_replace와 함께 Strip_tags를 사용하는 경우 사용자 정의 태그를 필터링하고 처리하는 방법은 무엇입니까?

gitbox 2025-08-26
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,예를 들어 데모</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"스크립트 실행을 시작하십시오...\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h2>strip_tags 그리고 preg_replace 함께 사용될 때,사용자 정의 태그의 필터링 및 처리를 구현하는 방법?</h2>

<p>존재하다PHP가운데,거래하십시오HTML문자열 일 때,经常需要对其가운데的标签进行过滤或替换。<code></span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>()

예제에서 알 수 있듯이 <strong> 태그 만 유지되고 다른 태그 만 삭제됩니다.

2. preg_replace는 더 복잡한 매칭 및 교체에 사용됩니다.

preg_replace는 일반 표현식을 지원하며 복잡한 태그 형식과 일치하고 태그 내부의 속성을 처리하는 데 사용할 수 있습니다. 예를 들어:

 
</span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">"&lt;p class='intro'&gt;샘플 텍스트&lt;/p&gt;"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/&lt;p[^&gt;]*&gt;/i'</span></span><span>, </span><span><span class="hljs-string">'&lt;div class="new-intro"&gt;'</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">$result</span></span><span>; 
</span><span><span class="hljs-comment">// 산출:&lt;div class="new-intro"&gt;샘플 텍스트&lt;/p&gt;</span></span><span>

여기서 우리는 모든 속성 <p> 태그를 New Class & lt 로 대체하기 위해 정기적으로 사용합니다 . div & gt ; 태그. p > <h3> iii . Strip_tags preg_replace를 결합하여 사용자 정의 태그 필터링 및 처리 구현 H3 > <p> strip_tags 간단한 기능을 가지고 있으며 태그 속성을 판단하는 것은 불가능하거나 태그의 내용을 다루는 것이 복잡 할 수 없습니다. preg_replace 와 결합하여 먼저 사용자 정의 태그를 표준 태그로 규칙적으로 바꾸거나 속성 조정을 수행 한 다음 Strip_tags를 사용하여 허용되지 않은 태그를 필터링 할 수 있습니다. P > <p> : 우리는 & lt 만 유지하고 싶습니다 . B & GT ; 그리고 & lt ; A & GT ; 태그이지만 사용자 정의 태그를 변환 해야합니다 & lt ; mytag & gt ; & lt ; 스팬 & gt ; & lt 대한 HREF 속성 ; A & GT ; 태그 . p > <pre> <code> $ html = "이것은 & lt ; mytag & gt ; custom tag & lt ;/ mytag & gt ; 및 & lt ; a입니다 . href = ' http : // 예제 . com ' title =' title '& gt ; link & lt ;/ a & gt ; 그리고 & lt ; B & GT ; 용감한& ; / b & gt ;. "; // 1 단계 : & lt ; mytag & gt ;를 & lt ; span & gt ; $ html = preg_replace ([ '/& lt ; \/? mytag & gt ;/ i '], [ function ($ matches ) { return str_ireplace ([ 'mytag' , '/mytag' ], [ 'span' , '/span' ], $ matches [ 0 ]); }], $ html ); // 2 단계 : <a> 태그의 비 HREF 속성을 필터링합니다. $ html = preg_replace_callback ( '/<a \ s+([^>]*)>/i' , function ( $ matches ) { // href 속성을 유지합니다. if ( preg_match ( '/href \ s * = \ s *[ "\ ' ] ? ' <a href = "'. $ hrefmatch [1]. '"> ' ; } 반품 '<a>' ; }, $ html ); // 3 단계 : strip_tags를 사용하여 지정된 태그를 유지합니다. $ result = strip_tags ( $ html , '<b> <a> <span>' ); 에코 $ 결과 ; 이런 식으로 원래 <mytag>는 <pan>로 대체되며 <a> 태그는 href 속성 만 유지되며 <b>, <a> 및 <span> 태그 만 전체로 유지되고 다른 태그는 제거됩니다.

4. 요약

  • Strip_tags는 대부분의 태그를 빠르게 제거하는 데 적합하므로 일부 간단한 태그를 유지할 수 있습니다.
  • 콜백 함수와 결합 된 preg_replace는 레이블 변환 및 속성 필터링과 같은 복잡한 요구를 유연하게 처리 할 수 ​​있습니다.
  • 이 둘을 결합하면 먼저 태그의 정기적 인 변환 또는 조정을 사용한 다음 최종 필터링에 Strip_tags를 사용하여 출력 HTML이 안전하고 비즈니스 요구에 부합하는지 확인할 수 있습니다.

요구 사항에 따른 정규식 및 필터링 로직의 합리적인 설계는 사용자 정의 레이블 필터링 및 처리를 구현하는 핵심입니다.