Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Sempadan Perkataan dalam PHP Mengendalikan Aksara Bukan Perkataan?

Bagaimanakah Sempadan Perkataan dalam PHP Mengendalikan Aksara Bukan Perkataan?

Mary-Kate Olsen
Lepaskan: 2024-10-21 07:25:03
asal
449 orang telah melayarinya

How Do Word Boundaries in PHP Handle Non-Word Characters?

Menyingkap Misteri Sempadan Kata Ungkapan Biasa dalam PHP

Apabila menggunakan ungkapan biasa untuk mencari perkataan tertentu dalam teks, selalunya wajar untuk mengenakan kekangan sama ada perkataan yang ditentukan menandakan permulaan atau penutup unit perkataan. Walau bagaimanapun, beberapa tingkah laku yang tidak dijangka mungkin timbul apabila cuba melaksanakan ini menggunakan sempadan perkataan.

Pertimbangkan ungkapan biasa berikut:

preg_match("/(^|\b)@nimal/i", "something@nimal", $match);
Salin selepas log masuk

Kami menjangkakan bahawa perlawanan akan gagal kerana ungkapan kumpulan akan menggunakan simbol "@", meninggalkan "nimal" untuk dipadankan dengan "@nimal," yang tidak sepatutnya. Walau bagaimanapun, dalam contoh ini, ungkapan pengelompokan sepadan dengan rentetan kosong, membenarkan "@nimal" dipadankan, membayangkan bahawa "@" dianggap sebagai sebahagian daripada perkataan.

Untuk membongkar misteri ini, adalah penting untuk memahami bagaimana sempadan perkataan dalam PHP ditentukan. Sempadan perkataan (b) mewakili titik peralihan antara watak perkataan (w) dan watak bukan perkataan (W). Untuk memadankan perkataan yang mesti bermula pada permulaan perkataan, aksara perkataan tambahan mesti mendahului perkataan yang dijangkakan.

Oleh itu, dalam contoh pertama:

something@nimal
        ^^
Salin selepas log masuk

Pemadanan berjaya kerana ada sempadan perkataan antara huruf "g" dan simbol "@". Walau bagaimanapun, dalam contoh kedua:

something!@nimal
         ^^ 
Salin selepas log masuk

Pemadanan gagal kerana "!" dan simbol "@" ialah kedua-dua aksara bukan perkataan, tidak mewujudkan sempadan perkataan. Untuk membetulkannya, anda boleh menggunakan ungkapan biasa berikut:

preg_match("/g\b!@\bn/i", "something!@nimal", $match);
Salin selepas log masuk

Ungkapan ini memerlukan aksara perkataan sebelum "@" dan aksara perkataan selepas "@," memastikan ia hanya sepadan apabila "@" muncul dalam satu perkataan.

Atas ialah kandungan terperinci Bagaimanakah Sempadan Perkataan dalam PHP Mengendalikan Aksara Bukan Perkataan?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan