>백엔드 개발 >PHP 튜토리얼 >교체하는 동안 HTML 태그 내부의 텍스트 수정을 방지하기 위해 Regex를 사용하는 방법은 무엇입니까?

교체하는 동안 HTML 태그 내부의 텍스트 수정을 방지하기 위해 Regex를 사용하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-01 22:54:11709검색

How to Use Regex to Avoid Modifying Text Inside HTML Tags During Replacement?

선택적 태그 지정을 위해 HTML 태그 외부와 일치하는 정규식

preg_replace를 사용하여 HTML 태그 내의 일치를 방지하려면 HTML 페이지에서는 이러한 항목을 제외하는 정규식을 정의하는 것이 중요합니다. 영역.

원래 패턴:

preg_replace("/(asf|gfd|oyws)/", '<span>

약점:

위의 패턴은 대상의 인스턴스와도 일치합니다. HTML 태그 내의 단어입니다. 바람직하지 않습니다.

향상된 패턴:

/(asf|foo|barr)(?=[^>]*(<|$))/

분석:

  • (asf|foo |barr): 대상과 일치 단어.
  • (?=): 닫는 HTML 태그(
  • 1*: 0과 일치 이상의 문자(닫는 HTML 태그

작동 방식:

이 패턴은 대상 단어가 아닌 경우에만 대상 단어와 일치합니다. 바로 뒤에 닫는 HTML 꺾쇠괄호가 옵니다. 일치를 HTML 태그 외부로 효과적으로 제한하여 태그 내부의 의도하지 않은 수정을 방지합니다.

예:

다음 HTML을 고려하세요.

<p>I am making a preg_replace on HTML page. My pattern is aimed to add surrounding tag to some words in HTML. However, sometimes my regular expression modifies HTML tags. For example, when I try to replace this text:</p>

<pre class="brush:php;toolbar:false"><a href="example.com" alt="yasar home page">yasar</a>

향상된 패턴을 사용하면 대상 단어 "yasar"가 일치되고 태그가 지정되며 "alt" 속성 내의 인스턴스는 앵커 태그는 그대로 유지됩니다:

<p>I am making a preg_replace on HTML page. My pattern is aimed to add surrounding tag to some words in HTML. However, sometimes my regular expression modifies HTML tags. For example, when I try to replace this text:</p>

<pre class="brush:php;toolbar:false"><a href="example.com" alt="yasar home page">yasar</a>
So that yasar reads

  1. >

    위 내용은 교체하는 동안 HTML 태그 내부의 텍스트 수정을 방지하기 위해 Regex를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.