Bagaimana untuk Melakukan Carian XPath Contains() Case-Insensitive?

DDD
Lepaskan: 2024-10-22 20:33:39
asal
743 orang telah melayarinya

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

Kes Insensitif XPath Mengandungi()

Soalan:

Apabila menggunakan XPath untuk menyemak kewujudan rentetan dalam nod teks, seperti dengan ungkapan /html/body//text()[contains(.,'test')], carian adalah sensitif huruf. Bagaimanakah kita boleh menjadikan carian tidak sensitif huruf besar dan kecil dalam XPath untuk JavaScript?

Jawapan:

Walaupun tiada cara mudah untuk melakukan perbandingan tidak sensitif huruf besar dalam XPath 1.0, terdapat teknik untuk mencapai hasil yang serupa:

  1. Terjemah Kes Aksara: Gunakan fungsi translate() untuk menukar nod teks dan rentetan carian kepada satu kes, sama ada di bahagian atas atau lebih rendah. Contohnya:
/html/body//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'test')]
Salin selepas log masuk

Kaedah ini mengandaikan bahawa abjad yang digunakan diketahui terlebih dahulu, jadi masukkan sebarang aksara beraksen yang mungkin ditemui.

  1. Dynamic XPath Ungkapan: Buat ungkapan XPath dinamik menggunakan bahasa hos seperti JavaScript. Gantikan rentetan carian dengan bentuk atas, bawah dan asalnya dalam klausa 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>
Salin selepas log masuk

Ini membenarkan carian tidak peka huruf besar-kecil tanpa mengira set aksara yang digunakan.

Perhatikan bahawa kaedah ini mungkin tidak mengendalikan petikan tunggal dalam rentetan carian dengan betul. Untuk kes dengan watak istimewa, pendekatan alternatif mungkin diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Carian XPath Contains() Case-Insensitive?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!