>백엔드 개발 >PHP 튜토리얼 >정규식을 사용하여 태그 자체에 영향을 주지 않고 HTML 태그 내의 텍스트를 수정하려면 어떻게 해야 합니까?

정규식을 사용하여 태그 자체에 영향을 주지 않고 HTML 태그 내의 텍스트를 수정하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-28 21:20:12277검색

How Can I Use Regular Expressions to Modify Text Within HTML Tags Without Affecting the Tags Themselves?

정규 표현식으로 HTML 태그 간섭 방지

HTML 페이지 처리에 정규 표현식을 사용할 때 의도하지 않은 HTML 태그 수정을 피하는 것이 중요합니다. . 태그 내의 텍스트를 수정하려고 할 때 일반적인 문제가 발생하지만 정규 표현식은 태그 자체에도 영향을 미칩니다.

특정 HTML 태그 내에서 간단한 텍스트 대체가 필요한 경우 언급된 예를 고려하십시오.

<a href="example.com" alt="yasar home page">yasar</a>

특정 클래스에서 "yasar"라는 단어를 강조 표시하려면 다음 정규식을 사용합니다.

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

그런데 이 표현은 의외로 또한 HTML 태그를 수정하여 "alt" 속성 내의 "yasar"를 대체합니다.

어설션을 사용한 솔루션

이 문제를 방지하려면 어설션을 사용하여 다음을 보장할 수 있습니다. 패턴은 HTML 태그 외부의 텍스트에만 일치합니다. 어설션은 문자를 사용하지 않고 특정 조건을 테스트하는 너비가 0인 표현식입니다.

한 가지 접근 방식은 부정 예측 어설션을 사용하여 일치하는 텍스트 바로 뒤에 "<"가 오지 않는지 확인하는 것입니다. 문자:

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

이 표현식은 "<"가 아닌 문자가 뒤에 오는지 확인하여 일치하는 단어가 HTML 태그 내에 나타나지 않도록 합니다. 문자(.[^>]*) 다음 여는 꺾쇠 괄호 < 또는 $.

문자열의 끝.

(?<=>)(asf|foo|barr)
또는 Lookbehind 어설션을 사용하여 일치하는 텍스트 앞에 ">"가 없는지 테스트할 수 있습니다. 문자:

이 표현식은 HTML 태그 내의 모든 텍스트를 제외하고 일치하는 단어 앞에 여는 꺾쇠 괄호가 있는지 확인합니다.

이러한 어설션을 정규 표현식에 통합하면 패턴 일치가 HTML 태그 외부에서만 발생하도록 하여 HTML 구조에 대한 의도하지 않은 수정을 방지합니다.

위 내용은 정규식을 사용하여 태그 자체에 영향을 주지 않고 HTML 태그 내의 텍스트를 수정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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