>  기사  >  웹 프론트엔드  >  XPath 쿼리는 contain()을 사용하여 대/소문자를 구분하지 않을 수 있습니까?

XPath 쿼리는 contain()을 사용하여 대/소문자를 구분하지 않을 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-22 20:45:35854검색

Can XPath Queries Become Case-Insensitive Using contains()?

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

질문:

contains() 함수를 사용하여 텍스트 노드를 검색할 때 XPath 쿼리에서 대소문자를 구분할 수 있나요?

답변:

예 , 다음 기술을 사용하여 대소문자를 구분하지 않는 XPath 쿼리가 가능합니다.

translate()contains() 사용:

이 방법에는 contains() 함수를 사용하기 전에 노드 값과 검색 문자열을 소문자로 변환하는 작업이 포함됩니다.

/html/body//text()[
  contains(
    translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
    'test'
  )
]

호스트 언어를 사용하여 동적 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 쿼리는 contain()을 사용하여 대/소문자를 구분하지 않을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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