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.