Cắt chuỗi trong PHP (substr, mb_substr) | Laptrinhcanban.com

Cắt chuỗi trong PHP (substr, mb_substr)

Hướng dẫn cách cắt chuỗi trong PHP. Bạn sẽ học được cách sử dụng các hàm có sẵn để cắt chuỗi trong PHP sau bài học này.

Có 2 phương pháp cắt chuỗi trong PHP như sau:

  • Cắt chuỗi thông thường bằng hàm substr
  • Cắt chuỗi chứa các ký tự Unicode như tiếng Việt có dấu bằng hàm mb_substr

Cắt chuỗi trong PHP bằng hàm substr

substr trong PHP là một hàm xử lý chuỗi có tác dụng cắt chuỗi con từ chuỗi ban đầu và tạo ra chuỗi mới. Phép cắt này không làm thay đổi chuỗi ban đầu.

Cú pháp hàm substr để cắt chuỗi trong PHP như sau:

substr ( $str , $start [, $length ] )

Trong đó:

  • str là chuỗi nguồn
  • ‘$start’ là vị trí bắt đầu cắt chuỗi từ chuỗi nguồn
  • $length là độ dài phạm vi cắt, tính từ $start. Độ dài này được tính theo đơn vị byte. Đối số này có thể được lược bỏ và khi đó sẽ cắt cho tới cuối chuỗi.

Ví dụ cụ thể:

$str = "abcde";
echo substr($str,1); //bcde

Trong ví dụ trên, chúng ta chỉ định cắt từ vị trí ký tự có index bằng 1 (ký tự b), và lược bỏ đối số $length, do đó hàm đã cắt từ b cho đến cuối chuỗi ban đầu.

Bây giờ hãy thử chỉ định cả độ dài phạm vi cắt với $length:

$str = "abcde";
echo substr($str,1 , 3); //bcd

Khi đó, hàm sẽ cắt từ vị trí ký tự b về đằng sau thêm 3 byte, và do các ký tự thông thường có độ dài 1 bye, nên đã trả về 3 ký tự trong chuỗi bcd như trên.

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";
echo substr($str,1 , 3); //hà

Do ký tự à có độ dài 2 byte, nên kết quả mặc dù chỉ định $length bằng 3 nhưng chỉ có 2 ký tự được cắt ra mà thôi.

Trong trường hợp muốn cắ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_substr để thay thế như sau.

Cắt chuỗi trong PHP chứa tiếng Nhật, tiếng Việt có dấu bằng hàm mb_substr

Tương tự như hàm substr thì mb_substr trong PHP là một hàm xử lý chuỗi có tác dụng cắt chuỗi con từ chuỗi ban đầu và tạo ra chuỗi mới. Phép cắt này không làm thay đổi chuỗi ban đầu.

Tuy nhiên điểm khác biệt của hàm mb_substr so với hàm substr đó là chúng ta có thể chỉ định mã ký tự (encoding) sử dụng khi xử lý chuỗi, qua đó có thể lấy chính xác số ký tự muốn cắt từ chuỗi ban đầu.

Cú pháp hàm mb_substr để cắt chuỗi kèm mã ký tự trong PHP như sau:

mb_substr( $str , $start [, $length , $encoding] )

Trong đó:

  • str là chuỗi nguồn
  • ‘$start’ là vị trí bắt đầu cắt chuỗi từ chuỗi nguồn
  • $length là độ dài phạm vi cắt, tính từ $start. Độ dài này được tính theo đơn vị byte. Đối số này có thể được lược bỏ và khi đó sẽ cắt cho tới cuối chuỗi.
  • $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_substr cũng trả về kết quả tương tự hàm substr:

Ví dụ cụ thể:

$str = "abcde";
echo mb_substr($str,1); //bcde
echo substr($str,1); //bcde

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 cắt chính xác số ký tự chỉ định, thì hàm mb_substr sẽ phát huy tác dụng của nó.

Ví dụ:

$str = "chào";
echo substr($str,1 , 3); //hà
echo mb_substr($str,1, 3); //hào

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

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách tính cắt chuỗi trong PHP bằng hàm substr và mb_substr 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.