Menyingkap Misteri Di Sebalik "Unknown Modifier 'g' in preg_match"
Apabila bekerja dengan ungkapan biasa dalam PHP menggunakan fungsi preg_match, anda mungkin menghadapi mesej ralat yang menyatakan "Pengubah suai tidak diketahui 'g'". Isu ini berkaitan dengan sintaks yang salah dalam ungkapan biasa yang anda gunakan.
Masalahnya
Ungkapan biasa yang anda cuba gunakan mengandungi 'g' pengubah suai (cth., /regex/gim) yang tidak dikenali oleh fungsi preg_match. Walaupun sesetengah tapak web ujian regex dalam talian mungkin membenarkan pengubah suai 'g', PHP tidak menyokongnya dalam konteks ini.
Penyelesaian
Untuk menyelesaikan isu ini, anda sebaliknya boleh menggunakan fungsi preg_match_all, yang menyokong pengubah suai 'g' untuk memadankan berbilang kejadian sesuatu corak. Pengubah suai 'g' memperkenalkan carian global, menunjukkan bahawa fungsi itu harus berulang pada keseluruhan rentetan dan sepadan dengan semua kemunculan corak.
Contoh
Sebaliknya:
preg_match("/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim", ....)
Gunakan:
preg_match_all("/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/im", ....)
Dengan menggantikan pengubah suai 'g' dengan pengubah 'm' dalam fungsi preg_match_all, kod anda akan berfungsi seperti yang dimaksudkan, memadankan berbilang kejadian corak alamat e-mel yang ditentukan dalam rentetan input.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Pengubahsuai Tidak Diketahui 'g' dalam preg_match'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!