Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Melakukan Carian XPath Contains() Case-Insensitive?

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

DDD
DDDasal
2024-10-22 20:33:39748semak imbas

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')]

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>

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!

Kenyataan:
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