Contains() 함수를 사용하여 XPath에서 대소문자를 구분하지 않는 검색을 수행하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-22 19:19:31
원래의
206명이 탐색했습니다.

How to Achieve Case-Insensitive Searching in XPath Using the contains() Function?

대소문자를 구분하지 않는 XPath의 contain() 함수

XPath에서 Contains() 함수는 대소문자를 구분합니다. 그러나 이 제한 사항을 해결할 수 있는 방법이 있습니다.

방법 1: 문자 번역

이 방법에는 하위 문자열을 확인하기 전에 문자를 소문자 또는 대문자로 번역하는 작업이 포함됩니다.

/html/body//text()[
  contains(
    translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
    'test'
  )
]
로그인 후 복사

하위 문자열 "test"를 확인하기 전에 텍스트의 모든 대문자를 소문자로 변환합니다.

방법 2: 동적 XPath 표현식

JavaScript와 같은 스크립팅 언어를 사용하면 대소문자를 구분하지 않는 동적 XPath 표현식을 생성할 수 있습니다.

<code class="javascript">function xpathPrepare(xpath, searchString) {
  return xpath.replace("$u", searchString.toUpperCase())
              .replace("$l", searchString.toLowerCase())
              .replace("$s", searchString.toLowerCase());
}

xp = xpathPrepare("//text()[contains(translate(., '$u', '$l'), '$s')]", "Test");</code>
로그인 후 복사

이렇게 하면 XPath 표현식의 자리 표시자가 검색 문자열의 대문자, 소문자 및 소문자 버전으로 대체됩니다.

추가 고려 사항

  • 두 방법 모두 알파벳이 알려져 있다고 가정합니다.
  • 요소 텍스트에 작은따옴표가 포함될 수 있는 경우 XPath 구문을 방지하기 위해 이스케이프 처리하세요. 오류가 발생했습니다.
  • 방법 2를 사용하는 경우 검색 문자열에서 이스케이프된 따옴표를 처리하세요.

위 내용은 Contains() 함수를 사용하여 XPath에서 대소문자를 구분하지 않는 검색을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿