Menukar Rentetan Terbatas Segaris Balik kepada Tatasusunan Bersekutu
Menukar rentetan dengan pasangan nilai kunci yang dipisahkan oleh garis miring ke belakang kepada tatasusunan bersekutu ialah tugas yang kerap dalam pengaturcaraan PHP. Berikut ialah beberapa pendekatan:
Menggunakan preg_match_all dan array_combine:
Pilihan yang paling berkesan ialah menggunakan fungsi preg_match_all dengan ungkapan biasa untuk mengekstrak kunci dan nilai. Selepas itu, fungsi array_combine boleh digunakan untuk mencipta tatasusunan bersekutu:
preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p); $array = array_combine($p[1], $p[2]);
Menyesuaikan kepada Pembatas Berbeza:
Pendekatan yang sama boleh digeneralisasikan untuk memenuhi pelbagai nilai kunci dan pembatas pasangan. Contohnya, regex berikut boleh mengendalikan titik bertindih dan koma sebagai pemisah:
preg_match_all("/ ([^:]+) : ([^,]+) /x", $string, $p); $array = array_combine($p[1], $p[2]);
Membenarkan Pembatas Fleksibel:
Membenarkan pembatas sewenang-wenang memberikan fleksibiliti yang lebih besar. Regex berikut membenarkan kunci dan nilai dipisahkan oleh aksara yang berbeza:
preg_match_all("/ ([^:=]+) [:=]+ ([^,+&]+) /x", $string, $p);
Mengekang Kekunci Abjad Angka:
Untuk mengehadkan kunci kepada aksara abjad angka, regex berikut boleh bekerja:
preg_match_all("/ (\w+) = ([^,]+) /x", $string, $p);
Melucutkan Ruang dan Memetik:
Untuk menghapuskan ruang kosong dan petikan pilihan daripada kekunci dan nilai, regex ini boleh digunakan:
preg_match_all("/ \s*([^=]+) \s*=\s* ([^,]+) (?<!\s) /x", $string, $p);
Mengekstrak Konfigurasi Gaya INI:
Untuk mengekstrak konfigurasi gaya INI, regex berikut ialah berguna:
preg_match_all("/^ \s*(\w+) \s*=\s* ['\"]?(.+?)['\"]? \s* $/xm", $string, $p);
Alternatif: parse_str
Untuk rentetan yang telah diformatkan sebagai "key=value&key2=value2," fungsi parse_str boleh digunakan. Menggabungkannya dengan strtr membolehkan pemprosesan pembatas alternatif:
parse_str(strtr($string, ":,", "=&"), $pairs);
Pendekatan Lain:
Walaupun kurang cekap, adalah mungkin untuk meledakkan rentetan dan gelung secara manual tatasusunan untuk mencipta tatasusunan bersekutu. Walau bagaimanapun, pemprofilan sering mendedahkan kaedah ini lebih perlahan daripada pendekatan ungkapan biasa.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan Terbatas Segaris Balik kepada Tatasusunan Bersekutu dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!