Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana dengan Cekap Menukar Rentetan Terbatas Segaris Belakang kepada Tatasusunan Bersekutu?

Bagaimana dengan Cekap Menukar Rentetan Terbatas Segaris Belakang kepada Tatasusunan Bersekutu?

Susan Sarandon
Lepaskan: 2024-12-01 08:34:10
asal
695 orang telah melayarinya

How to Efficiently Convert a Backslash-Delimited String into an Associative Array?

Menghasilkan Tatasusunan Bersekutu daripada Rentetan Terbatas Segaris Balik

Banyak senario memerlukan penukaran rentetan yang mengandungi pasangan nilai kunci yang dipisahkan oleh garis miring ke belakang kepada tatasusunan bersekutu. Transformasi ini membolehkan akses mudah kepada nilai individu menggunakan kekunci yang sepadan.

Menggunakan Ungkapan Biasa Tersuai

Satu kaedah yang berkesan ialah menggunakan ungkapan biasa tersuai bersama-sama dengan preg_match_all dan array_combine:

preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p);
$array = array_combine($p[1], $p[2]);
Salin selepas log masuk

Ungkapan biasa ini sepadan dengan pasangan nilai kunci dalam rentetan dan mengekstraknya ke dalam dua tatasusunan ($p[1] dan $p[2]) yang kemudiannya digabungkan ke dalam tatasusunan $array bersekutu.

Mengerti Pendekatan

Kaedah ini boleh disesuaikan untuk mengendalikan nilai kunci yang berbeza pemisah dan pembatas pasangan:

# For key-value separation using ':' and pair separation using ','
preg_match_all("/([^:]+)\\([^\,]+)/", $string, $p);
$array = array_combine($p[1], $p[2]);
Salin selepas log masuk

Pembeza Berbeza

Kepada menampung pembatas yang berbeza-beza, ungkapan biasa boleh diubah suai:

# Allow different delimiters for keys, values, and pairs
preg_match_all("/([^:=]+)[ :=]+([^,+&]+)/", $string, $p);
Salin selepas log masuk

Mengekang Kekunci Abjad Angka

Untuk memastikan kekunci hanya terdiri daripada aksara abjad angka:

# Allow only alphanumeric keys
preg_match_all("/(\w+)[ :=]+([^,+&]+)/", $string, $p);
Salin selepas log masuk

Pertimbangan Tambahan

  • Jalur ruang hadapan/belakang: preg_match_all("/s*([^=] )s*=s*([^,] )s*/", $string, $p);
  • Alih keluar petikan pilihan: preg_match_all("/s *([^=] )s*=s*'?([^,] )(?

Teknik Alternatif

Selain pendekatan ekspresi biasa, kaedah lain termasuk:

parse_str(): Memerlukan rentetan praproses dengan pasangan nilai kunci telah dipisahkan oleh &.

explode() foreach: Melekat secara manual melalui pasangan nilai kunci yang meletup, yang mungkin dikenakan overhed tambahan.

Gelung tersuai: Menghuraikan aksara rentetan mengikut aksara, serupa dengan pendekatan explode(), tetapi berpotensi lebih perlahan.

Pilihan pendekatan bergantung pada keperluan khusus dan pertimbangan prestasi aplikasi anda.

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Rentetan Terbatas Segaris Belakang kepada Tatasusunan Bersekutu?. 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