Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menggantikan Pengubahsuai `preg_replace()` `/e` PHP dengan Selamat dengan `preg_replace_callback()`?

Bagaimana untuk Menggantikan Pengubahsuai `preg_replace()` `/e` PHP dengan Selamat dengan `preg_replace_callback()`?

Susan Sarandon
Lepaskan: 2024-12-19 12:15:16
asal
600 orang telah melayarinya

How to Safely Replace PHP's Deprecated `preg_replace()` `/e` Modifier with `preg_replace_callback()`?

Ganti Preg_replace()'s '/e' Modifier dengan preg_replace_callback()

Ekspresi biasa boleh menakutkan, terutamanya apabila bekerja dengan menangkap kumpulan dan penggantian. Mari kita tafsirkan tugas gantian daripada preg_replace() menggunakan pengubah suai '/e':

public static function camelize($word) {
   return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word);
}
Salin selepas log masuk

Di sini, matlamatnya ialah untuk menggunakan huruf besar berikutan '^' (permulaan rentetan) atau '_' ( garis bawah).

Memahami Pengubahsuai '/e'

Pengubah suai '/e' menilai rentetan gantian sebagai kod PHP. '2' merujuk kepada kumpulan yang ditangkap kedua, iaitu huruf kecil berikutan '^' atau '_'. Walau bagaimanapun, pengubah suai ini telah ditamatkan atas sebab keselamatan.

Peralihan kepada preg_replace_callback()

preg_replace_callback() menawarkan alternatif yang lebih selamat dengan menyediakan fungsi panggil balik dan bukannya rentetan gantian:

return preg_replace_callback('/(^|_)([a-z])/', function($matches) {
    return strtoupper($matches[2]);
}, $word);
Salin selepas log masuk
Salin selepas log masuk

Fungsi Panggilan Balik

Fungsi tanpa nama mengambil tatasusunan padanan sebagai hujah. Di sini, $matches[1] mewakili '^' atau '_' dan $matches[2] huruf yang hendak dijadikan huruf besar.

Metukar Corak

Perhatikan bahawa '/e' pengubah suai perlu dialih keluar apabila menggunakan preg_replace_callback(). Corak di atas memudahkan kepada:

return preg_replace_callback('/(^|_)([a-z])/', function($matches) {
    return strtoupper($matches[2]);
}, $word);
Salin selepas log masuk
Salin selepas log masuk

Skop Pembolehubah

Fungsi tanpa nama hanya mempunyai akses kepada pembolehubah yang diimport secara eksplisit menggunakan kata kunci 'guna'.

Gotchas

  • Pengubah suai '/e' mengalih keluar garis miring daripada hujah, tidak seperti preg_replace_callback().
  • Kata kunci 'use' membenarkan pengimportan pembolehubah ke dalam panggilan balik, menangani isu skop pembolehubah.

Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Pengubahsuai `preg_replace()` `/e` PHP dengan Selamat dengan `preg_replace_callback()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China 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