大文字と小文字を区別しない 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>
このメソッドは、検索文字列内の必要な文字のみを変換するため、あらゆる検索文字列に適しています。
考慮事項:
以上がcontains() を使用すると、XPath クエリで大文字と小文字が区別されなくなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。