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

Barbara Streisand
リリース: 2024-10-22 19:19:31
オリジナル
106 人が閲覧しました

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

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!