Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah saya boleh menukar rentetan yang dibatasi garis serong ke belakang kepada tatasusunan bersekutu dalam PHP?

Bagaimanakah saya boleh menukar rentetan yang dibatasi garis serong ke belakang kepada tatasusunan bersekutu dalam PHP?

DDD
Lepaskan: 2024-12-10 02:48:08
asal
769 orang telah melayarinya

How can I convert a backslash-delimited string into an associative array in PHP?

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

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

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

Ini membenarkan key=value, key2:value2, atau variasi serupa.

Ciri Tambahan

Anda boleh meningkatkan lagi pengekstrakan:

  • Kekangan Alphanumeric Kekunci: Pastikan kekunci adalah abjad angka.
  • Ruang Jalur/Petikan: Alih keluar ruang atau petikan yang tidak perlu.
  • Pengeluaran Gaya INI: Ekstrak data dalam format INI biasa (key=value).

Alternatif: parse_str

Untuk pengendalian mudah rentetan key=value&key2=value2, pertimbangkan untuk menggunakan parse_str dengan strtr:

parse_str(strtr($string, ":,", "=&"), $pairs);
Salin selepas log masuk

Pertimbangan

  • preg_match_all array_combine: Sangat fleksibel, boleh disesuaikan dan sangat sesuai untuk yang tidak diketahui pembatas.
  • parse_str: Lebih ringkas dan dioptimumkan untuk pembatas yang diketahui seperti "&".
  • meletup depan: Pendekatan manual, selalunya lebih perlahan dan lebih bertele-tele .

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan