大文字と小文字を区別しない XPath Contains() 検索を実行するにはどうすればよいですか?

DDD
リリース: 2024-10-22 20:33:39
オリジナル
743 人が閲覧しました

How to Perform Case-Insensitive XPath Contains() Searches?

大文字と小文字を区別しない XPath Contains()

質問:

XPath を使用して次のことを確認する場合式 /html/body//text()[contains(.,'test')] など、テキスト ノード内に文字列が存在する場合、検索では大文字と小文字が区別されます。 XPath for JavaScript で大文字と小文字を区別しない検索をするにはどうすればよいですか?

答え:

XPath 1.0 では大文字と小文字を区別しない比較を実行する簡単な方法はありません。同様の結果を達成するテクニックがあります:

  1. 文字の大文字と小文字の変換: translation() 関数を使用して、テキスト ノードと検索文字列を 1 つの大文字と小文字に変換します。それ以下。例:
/html/body//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'test')]
ログイン後にコピー

このメソッドは、使用されるアルファベットが事前にわかっていることを前提としているため、出現する可能性のあるアクセント付き文字を含めます。

  1. Dynamic XPath式: JavaScript などのホスト言語を使用して動的な XPath 式を作成します。検索文字列を contains() 句の上位、下位、および元の形式に置き換えます:
<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");
// -> "//text()[contains(translate(., 'TEST', 'test'), 'test')]"</code>
ログイン後にコピー

これにより、使用される文字セットに関係なく、大文字と小文字を区別しない検索が可能になります。

これらのメソッドは検索文字列の一重引用符を正しく処理できない可能性があることに注意してください。特殊文字を使用する場合は、別のアプローチが必要になる場合があります。

以上が大文字と小文字を区別しない XPath Contains() 検索を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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