Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Hàm mb_strcut() trong PHP

Hàm mb_strcut() cắt phần chuỗi con từ chuỗi đã cho. Khác với mb_substr() (tính theo character), mb_strcut() hoạt động trên byte. Nếu vị trí cắt nằm giữa 2 byte của ký tự multi-byte, cắt từ byte đầu tiên của ký tự đó.

Cú pháp

string mb_strcut(
    string $string,
    int $start,
    int $length = null,
    string $encoding = null
)

Tham số

Tham số Mô tả
$string Chuỗi gốc bị cắt.
$start Vị trí byte bắt đầu (0-index). Nếu âm: tính từ cuối chuỗi. Nếu |start| > độ dài → bắt đầu từ 0.
$length Số byte cần cắt. Nếu null/omit: cắt đến cuối chuỗi. Nếu âm: dừng trước |length| byte từ cuối.
$encoding Encoding ký tự. Nếu null: dùng internal encoding (mb_internal_encoding()).

Ví dụ

<?php
mb_internal_encoding("UTF-8");

// Chuỗi "Onlinetutorial" (ASCII, 1 char = 1 byte)
// Cắt từ byte 6, độ dài 5 byte
$cut = mb_strcut("Onlinetutorial", 6, 5, "UTF-8");
echo mb_strtoupper($cut);  // Output: TUTOR
?>

Kết quả

TUTOR

Giải thích: "Onlinetutorial" – byte 0=O, 1=n, 2=l, 3=i, 4=n, 5=e, 6=t, 7=u, 8=t, 9=o, 10=r → cắt 5 byte từ vị trí 6 ra "tutor".

So sánh mb_strcut vs mb_substr

Hàm Đơn vị đếm Xử lý multi-byte
mb_strcut() Byte Cắt giữa char multi-byte → cắt từ byte đầu của char đó
mb_substr() Character Luôn cắt tại ranh giới character

Khi nào dùng mb_strcut?

  • Xử lý binary data hoặc protocol dựa trên byte offset.
  • Cần hiệu năng cao hơn mb_substr() (không cần đếm grapheme/character).
  • Khi làm việc với encoding fixed-width hoặc ASCII trong UTF-8.