Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menukar Rentetan Terbatas Segaris Balik kepada Tatasusunan Bersekutu dalam PHP?

Bagaimana untuk Menukar Rentetan Terbatas Segaris Balik kepada Tatasusunan Bersekutu dalam PHP?

Susan Sarandon
Lepaskan: 2024-11-29 18:17:08
asal
403 orang telah melayarinya

How to Convert a Backslash-Delimited String to an Associative Array in PHP?

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]);
Salin selepas log masuk

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]);
Salin selepas log masuk

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);
Salin selepas log masuk

Mengekang Kekunci Abjad Angka:

Untuk mengehadkan kunci kepada aksara abjad angka, regex berikut boleh bekerja:

preg_match_all("/ (\w+) = ([^,]+) /x", $string, $p);
Salin selepas log masuk

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);
Salin selepas log masuk

Mengekstrak Konfigurasi Gaya INI:

Untuk mengekstrak konfigurasi gaya INI, regex berikut ialah berguna:

preg_match_all("/^ \s*(\w+) \s*=\s* ['\"]?(.+?)['\"]? \s* $/xm", $string, $p);
Salin selepas log masuk

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, ":,", "=&amp;"), $pairs);
Salin selepas log masuk

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!

sumber:php.cn
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