ホームページ  >  記事  >  ウェブフロントエンド  >  contains() を使用すると、XPath クエリで大文字と小文字が区別されなくなりますか?

contains() を使用すると、XPath クエリで大文字と小文字が区別されなくなりますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-22 20:45:35858ブラウズ

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 クエリを簡素化できます。

以上がcontains() を使用すると、XPath クエリで大文字と小文字が区別されなくなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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