Elakkan Gangguan Tag HTML dengan Ungkapan Biasa
Apabila menggunakan ungkapan biasa untuk memproses halaman HTML, adalah penting untuk mengelakkan pengubahsuaian yang tidak diingini pada teg HTML . Cabaran biasa timbul apabila cuba mengubah suai teks dalam teg, tetapi ungkapan biasa juga mempengaruhi teg itu sendiri.
Pertimbangkan contoh yang dinyatakan di mana penggantian teks mudah dikehendaki dalam teg HTML tertentu:
<a href="example.com" alt="yasar home page">yasar</a>
Untuk menyerlahkan perkataan "yasar" dengan kelas tertentu, ungkapan biasa berikut ialah used:
preg_replace("/(asf|gfd|oyws)/", '<span>
Walau bagaimanapun, ungkapan ini secara tidak dijangka turut menggantikan "yasar" dalam atribut "alt", mengubah suai teg HTML.
Penyelesaian Menggunakan Penegasan
Untuk mengelakkan isu ini, penegasan boleh digunakan untuk memastikan corak hanya sepadan dengan teks di luar teg HTML. Penegasan ialah ungkapan lebar sifar yang menguji keadaan tertentu tanpa menggunakan sebarang aksara.
Satu pendekatan ialah menggunakan pernyataan pandangan negatif untuk memastikan teks yang dipadankan tidak diikuti dengan segera oleh "<" watak:
/(asf|foo|barr)(?=[^>]*(<|$))/
Ungkapan ini memastikan bahawa perkataan yang dipadankan tidak muncul dalam teg HTML dengan menyemak bahawa ia diikuti oleh sebarang nombor bukan-"<" aksara (.[^>]*) dan kemudian sama ada kurungan sudut pembukaan < atau hujung rentetan $.
Sebagai alternatif, penegasan lihat di belakang boleh digunakan untuk menguji bahawa teks yang dipadankan tidak didahului oleh ">" watak:
(?<=>)(asf|foo|barr)
Ungkapan ini menyemak bahawa perkataan yang dipadankan didahului oleh kurungan sudut pembukaan, tidak termasuk semua teks dalam teg HTML.
Dengan memasukkan pernyataan ini ke dalam ungkapan biasa anda, anda boleh memastikan bahawa padanan corak berlaku secara eksklusif di luar teg HTML, menghalang pengubahsuaian yang tidak diingini pada struktur HTML.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Ungkapan Biasa untuk Mengubah Suai Teks Dalam Teg HTML Tanpa Menjejaskan Teg Itu Sendiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!