Chuyển chuỗi thành mảng trong PHP (str_split, mb_str_split) | Laptrinhcanban.com

Chuyển chuỗi thành mảng trong PHP (str_split, mb_str_split)

Hướng dẫn cách chuyển chuỗi thành mảng trong PHP. Bạn sẽ học được cách sử dụng phương thức str_split và mb_str_split để chuyển chuỗi thành mảng trong PHP, và ứng dụng chúng để tách từng ký tự trong chuỗi PHP sau bài học này.

Chuyển chuỗi thành mảng trong PHP bằng hàm str_split

str_split trong PHP là một hàm xử lý chuỗi có tác dụng tách các chuỗi con từ chuỗi ban đầu theo độ dài chỉ định và trả về mảng kết quả chứa các chuỗi con đó.

Bằng cách sử dụng hàm str_split, chúng ta có thể chuyển chuỗi thành mảng trong PHP với cú pháp sau đây:

$arr = str_split( $str [, $length ])

Trong đó:

  • str là chuỗi nguồn
  • ‘$length’ là độ dài lớn nhất (tính theo byte) của chuỗi con được tách. Đối số này có thể lược bỏ và khi đó sẽ dùng giá trị mặc định bằng 1.

Ví dụ cụ thể, chúng ta tách chuỗi ban đầu thành từng chuỗi con có độ dài bằng 3, rồi lưu các chuỗi được tách vào mảng như sau:

$str  = "abcdefghkm";
$arr = str_split ($str, 3);

print_r( $arr);

Kết quả, một mảng gồm 4 phần tử chứa các chuỗi con có độ dài lớn nhất bằng 3 byte đã được trả về:

Array
(
[0] => abc
[1] => def
[2] => ghk
[3] => m
)

Tuy nhiên cần lưu ý, nếu trong chuỗi có chứa ký tự 2 byte, ví dụ tiếng Việt có dấu hoặc hán tự tiếng Trung tiếng Nhật thì kết quả sẽ khác đi:

$str = "chào";
$arr = str_split ($str, 2);

print_r( $arr);

Kết quả:

Array
(
[0] => ch
[1] => à
[2] => o
)

Do ký tự à có độ dài 2 byte, nên mình nó đã được cắt ra một mình và chuyển vào mảng như trên.

Trong trường hợp muốn cắt chính xác số ký tự từ chuỗi chứa các ký tự dài hơn 1 byte như vậy, hãy dùng tới hàm mb_str_split để thay thế như sau.

Chuyển chuỗi chứa tiếng Nhật, tiếng Việt có dấu thành mảng trong PHP

Tương tự như hàm str_split thì mb_str_split trong PHP là một hàm xử lý chuỗi có tác dụng tách các chuỗi con từ chuỗi ban đầu theo độ dài chỉ định và trả về mảng kết quả chứa các chuỗi con đó.

Tuy nhiên điểm khác biệt của hàm mb_str_split so với hàm str_split đó là chúng ta có thể chỉ định mã ký tự (encoding) sử dụng khi xử lý chuỗi, qua đó có thể chỉ định độ dài của chuỗi con cần tách bằng số ký tự, thay vì bằng số byte.

Cú pháp hàm mb_str_split để tách chuỗi con theo số ký tự chỉ định trong PHP như sau:

$arr = mb_str_split( $str [, $length , $encoding])

Trong đó:

  • str là chuỗi nguồn
  • ‘$length’ là độ dài lớn nhất (tính theo số ký tự) của chuỗi con được tách. Đối số này có thể lược bỏ và khi đó sẽ dùng giá trị mặc định bằng 1.
  • $encoding là mã ký tự sử dụng để xử lý chuỗi. Nếu lược bỏ hoặc chỉ định $encoding = null thì mã mặc định sẽ được dùng.

Về cơ bản thì hàm mb_str_split cũng trả về kết quả tương tự hàm str_split:

Ví dụ cụ thể:

$str  = "abcdefghkm";
$arr = mb_str_split ($str, 3);

print_r( $arr);

Kết quả trả về giống với hàm str_split ở trên.

Array
(
[0] => abc
[1] => def
[2] => ghk
[3] => m
)

Tuy nhiên khi trong chuỗi chứa tiếng Việt có dấu, hán tự tiếng Trung hay kanji tiếng Nhật mà bạn muốn chỉ định chính xác số ký tự chỉ định của từng chuỗi con, thì hàm mb_str_split sẽ phát huy tác dụng của nó.

Ví dụ:

$str = "chào";
$arr = mb_str_split ($str, 2);

print_r( $arr);

Kết quả:

Array
(
[0] => ch
[1] => ào
)

Có thể thấy rõ trong kết quả thì hàm mb_str_split sẽ cắt chính xác các chuỗi con với số lượng ký tự đã chỉ định.

Tách từng ký tự trong chuỗi PHP

Trong phần trên chúng ta đã học cách dùng cách chuyển chuỗi thành mảng trong PHP bằng các hàm mb_str_split, trong trường hợp chỉ định độ dài của chuỗi con cần tách rồi.

Tuy nhiên nếu lược bỏ đi đối số chỉ định độ dài, hoặc đặt nó bằng 1, khi đó các ký tự sẽ lần lượt được tách ra.

Ứng dụng điều đó, chúng ta có thể tách từng ký tự trong chuỗi PHP bằng hàm mb_str_split bằng một trong hai cú pháp sau đây:

mb_str_split( $str );

mb_str_split( $str, 1);

Hãy xem ví dụ cụ thể sau đây:

$str  = "abcd";
$arr = mb_str_split ($str);

print_r( $arr);

Kết quả:

Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)

Tương tự với các chuỗi có chứa ký tự trên 2 byte như tiếng Việt có dấu, hán tự Trung Nhật:

$str = "chào";
$arr = mb_str_split ($str);

print_r( $arr);

Kết quả:

Array
(
[0] => c
[1] => h
[2] => à
[3] => o
)

Lưu ý, mặc dù chúng ta cũng có thể dùng hàm str_split để tách từng ký tự trong chuỗi PHP khi tất cả các ký tự tạo chuỗi đều là ký tự 1 byte (ký tự tiếng Anh), nhưng do hàm str_split nếu dùng với chuỗi có tiếng Việt sẽ hay nhầm giữa số byte và số ký tự, nên Kiyoshi khuyến khích sử dụng hàm mb_str_split để tách từng ký tự trong chuỗi PHP.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách chuyển chuỗi thành mảng trong PHP bằng các hàm có sẵn cũng như ứng dụng chúng để tách từng ký tự trong chuỗi PHP rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về PHP trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.