Tukar Rentetan Berbatasan Terbalik kepada Tatasusunan Bersekutu
Dalam PHP, tugas biasa ialah memproses rentetan yang diformatkan dengan pasangan nilai kunci yang diasingkan oleh pemisah. Contoh biasa ialah rentetan yang dipisahkan dengan garis ke belakang, di mana pasangan kunci dan nilai dipisahkan dengan garisan ke belakang ().
Menggunakan preg_match_all dan array_combine
Satu kaedah yang berkesan melibatkan penggunaan fungsi preg_match_all untuk mengekstrak kedua-dua kunci dan nilai ke dalam tatasusunan berasingan, yang kemudiannya digabungkan menggunakan array_combine.
preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p); $array = array_combine($p[1], $p[2]);
Corak regex ini memadankan mana-mana aksara bukan garis miring ke belakang ke dalam $p[1] (kunci) dan mana-mana aksara bukan garis miring ke belakang ke dalam $p[2] (nilai).
Menyesuaikan Pemisah Kunci/Nilai
Pendekatan ini boleh digeneralisasikan untuk mengendalikan pemisah nilai kunci:
preg_match_all("/ ([^:]+) : ([^,]+) /x", $string, $p); $array = array_combine($p[1], $p[2]);
Cukup gantikan ":" dengan pemisah nilai kunci yang anda inginkan dan "," dengan pembatas pasangan yang anda inginkan.
Membenarkan Pemisah Pelbagai
Untuk membenarkan pembatas yang berbeza-beza, gunakan:
preg_match_all("/ ([^:=]+) [:=]+ ([^,+&]+) /x", $string, $p);
Ini membenarkan key=value, key2:value2, atau variasi serupa.
Ciri Tambahan
Anda boleh meningkatkan lagi pengekstrakan:
Alternatif: parse_str
Untuk pengendalian mudah rentetan key=value&key2=value2, pertimbangkan untuk menggunakan parse_str dengan strtr:
parse_str(strtr($string, ":,", "=&"), $pairs);
Pertimbangan
Pilih kaedah yang paling sesuai berdasarkan keperluan anda dan tukar ganti.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar rentetan yang dibatasi garis serong ke belakang kepada tatasusunan bersekutu dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!