Cabaran:
Pengubah suai ungkapan biasa, seperti /e, ditamatkan dalam PHP . Ini memberikan cabaran apabila cuba menggantikan pengubah suai /e dalam kod berikut dengan preg_replace_callback alternatif:
public static function camelize($word) { return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word); }
Memahami Rujukan Balik:
The /e pengubah suai menggantikan garis miring ke belakang dengan nombor (1) untuk mewakili bahagian yang ditangkap pada rentetan yang dipadankan. Contohnya, dalam ungkapan yang diberikan (^|_)([a-z]), tangkapan pertama ialah (^|_) dan yang kedua ialah ([a-z]).
Alternatif preg_replace_callback:
preg_replace_callback mengambil fungsi panggil balik yang menerima tatasusunan subcorak yang ditangkap sebagai hujah. Subcorak pertama adalah pada indeks 0, kedua pada indeks 1 dan seterusnya.
Memohon pada Kod:
Untuk menggantikan pengubah suai /e, kita perlu untuk menukar rentetan gantian kepada fungsi tanpa nama:
function($m) { return strtoupper($m[2]); }
Fungsi ini mengambil tatasusunan padanan $m dan mengembalikan yang kedua subcorak yang ditangkap ditukar kepada huruf besar.
Menggabungkan Semuanya:
Kod akhir menjadi:
public static function camelize($word) { return preg_replace_callback('/(^|_)([a-z])/', function($m) { return strtoupper($m[2]); }, $word); }
Pertimbangan Tambahan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantikan Pengubahsuai `/e` PHP yang Dihentikan dengan Selamat dalam `preg_replace` dengan `preg_replace_callback`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!