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
Susan Sarandonasal
2024-12-19 12:15:16494semak imbas

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);
}

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);

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);

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