Case-Insensitive XPath mengandungi() Fungsi
Soalan:
Bolehkah pertanyaan XPath dibuat tidak sensitif huruf besar apabila menggunakan fungsi contains() untuk mencari nod teks?
Jawapan:
Ya , pertanyaan XPath tidak sensitif huruf besar dan kecil boleh dilakukan menggunakan teknik berikut:
Menggunakan terjemah() dan mengandungi():
Kaedah ini melibatkan menterjemah nilai nod dan rentetan carian kepada huruf kecil sebelum menggunakan fungsi mengandungi():
/html/body//text()[ contains( translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'test' ) ]
Menggunakan Bahasa Hos untuk Membina Ekspresi XPath Dinamik:
Jika boleh, buat ungkapan XPath dinamik menggunakan bahasa hos seperti JavaScript:
<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>
Kaedah ini hanya menterjemah aksara yang diperlukan dalam rentetan carian, menjadikannya sesuai untuk mana-mana istilah carian.
Pertimbangan:
Atas ialah kandungan terperinci Bolehkah Pertanyaan XPath Menjadi Tidak Peka Huruf Menggunakan mengandungi()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!