Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar rentetan kepada tatasusunan dalam PHP

Bagaimana untuk menukar rentetan kepada tatasusunan dalam PHP

PHPz
PHPzasal
2023-04-23 09:12:17834semak imbas

Dalam PHP, rentetan dan tatasusunan ialah salah satu jenis data yang paling biasa digunakan. Rentetan biasanya data yang terdiri daripada satu set aksara, manakala tatasusunan ialah struktur data yang terdiri daripada senarai data tersusun. Dalam PHP, kadangkala kita perlu menukar rentetan kepada tatasusunan untuk melaksanakan operasi yang lebih fleksibel pada data di dalamnya. Artikel ini akan memperkenalkan cara menukar rentetan kepada tatasusunan dalam PHP dan meneroka isu berkaitannya di bawah pengekodan UTF-8.

1. Menukar rentetan kepada tatasusunan dalam PHP

Menukar rentetan kepada tatasusunan dalam PHP boleh dicapai melalui pelbagai kaedah, seperti fungsi seperti explode(), str_split() dan preg_split( ). Dua daripada kaedah ini diperkenalkan di bawah.

  1. Gunakan fungsi explode()

Fungsi explode() ialah cara biasa untuk menukar rentetan kepada tatasusunan dalam PHP sintaksnya adalah seperti berikut:

array explode(string $delimiter, string $string [, int $limit = PHP_INT_MAX])
Sebagai contoh, kita mempunyai rentetan $str yang kandungannya:

Kita boleh menukarnya menjadi tatasusunan dengan koma sebagai pembatas, kodnya adalah seperti berikut:

$str = "apple,banana,orange";

Hasil keluarannya ialah:

$arr = explode(",", $str);
print_r($arr);

Gunakan fungsi str_split()
Array
(
    [0] => apple
    [1] => banana
    [2] => orange
)
  1. fungsi str_split() boleh menukar rentetan kepada tatasusunan aksara, sintaks adalah seperti berikut:

Antaranya, $string ialah rentetan yang hendak ditukar, $split_length ialah parameter pilihan, menyatakan panjang setiap aksara, lalai ialah 1 aksara.

array str_split(string $string [, int $split_length = 1])
Sebagai contoh, kami mempunyai rentetan $str yang kandungannya:

Kami boleh menukarnya menjadi tatasusunan aksara dengan kod berikut:

$str = "hello world";

Hasil output ialah:

$arr = str_split($str);
print_r($arr);

2 Isu dengan pengekodan aksara dan pengekodan UTF-8

Array
(
    [0] => h
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] =>
    [6] => w
    [7] => o
    [8] => r
    [9] => l
    [10] => d
)
Apabila kita menggunakan kaedah di atas untuk menukar rentetan kepada tatasusunan, kita perlu memberi perhatian. kepada isu pengekodan aksara . Oleh kerana panjang (bilangan bait) aksara adalah berbeza di bawah pengekodan aksara yang berbeza, ini akan menyebabkan masalah menggunakan fungsi str_split() di bawah pengekodan UTF-8.

Di bawah pengekodan UTF-8, aksara Cina biasanya menduduki 3 bait dan aksara Inggeris menduduki 1 bait. Oleh itu, jika kita menggunakan fungsi str_split() untuk menukar rentetan yang dikodkan UTF-8 kepada tatasusunan, ralat pemisahan aksara akan berlaku.

Sebagai contoh, kami mempunyai rentetan berkod UTF-8 $str yang kandungannya:

Kami mahu menukarnya menjadi tatasusunan aksara, tetapi jika kami menggunakan str_split secara langsung () fungsi, keputusan berikut akan diperolehi:

$str = "中文test";

Dapat dilihat bahawa aksara Cina terbahagi kepada dua aksara secara salah.

Array
(
    [0] => 中
    [1] => 文
    [2] => t
    [3] => e
    [4] => s
    [5] => t
)
Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi mb_str_split(). Fungsi ini adalah tambahan kepada fungsi str_split() dan menyokong pemisahan aksara berbilang bait Sintaksnya adalah seperti berikut:

di mana $string ialah rentetan yang hendak ditukar dan $split_length adalah pilihan. parameter. , menentukan panjang setiap aksara, lalai ialah 1 aksara, $encoding ialah parameter pilihan, menentukan pengekodan aksara, lalai ialah mb_internal_encoding().

array mb_str_split(string $string [, int $split_length = 1 [, string $encoding = mb_internal_encoding()]])
Sebagai contoh, kita boleh menggunakan kod berikut untuk menukar rentetan $str di atas menjadi tatasusunan:

Outputnya ialah:

$arr = mb_str_split($str);
print_r($arr);

Hasilnya betul.

Array
(
    [0] => 中
    [1] => 文
    [2] => t
    [3] => e
    [4] => s
    [5] => t
)
3. Ringkasan

Dalam PHP, menukar rentetan kepada tatasusunan ialah operasi biasa. Kita boleh melakukan ini menggunakan fungsi explode() atau str_split(). Walau bagaimanapun, di bawah pengekodan UTF-8, anda perlu memberi perhatian kepada masalah panjang aksara, yang boleh diselesaikan menggunakan fungsi mb_str_split(). Pada masa yang sama, kita juga boleh menggunakan fungsi lain, seperti preg_split(), dsb. Dalam penggunaan sebenar, fungsi dan kaedah yang sesuai perlu dipilih mengikut situasi tertentu.

Atas ialah kandungan terperinci Bagaimana untuk menukar rentetan kepada tatasusunan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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