ホームページ  >  記事  >  ウェブフロントエンド  >  contains() 関数を使用して XPath で大文字と小文字を区別しない検索を実現するにはどうすればよいですか?

contains() 関数を使用して XPath で大文字と小文字を区別しない検索を実現するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-22 19:19:31108ブラウズ

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

大文字と小文字を区別しない XPath contains() 関数

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。