Với substr()
bạn có thể bỏ qua các tham số thứ ba để có được toàn bộ phần còn lại của chuỗi:Nhận phần còn lại của chuỗi đến cuối với mb_substr() và vẫn thiết lập mã hóa
substr('abcdefg', 2) // returns "cdefg"
Bạn không thể làm tương tự với mb_substr()
:
mb_substr('abcdefg', 2, null, 'UTF-8'); // returns empty string
Tôi chỉ tìm thấy các giải pháp kỳ lạ và xấu xí.
Thiết lập một số lượng rất cao như chiều dài:
$a = mb_substr('abcdefg', 2, 9999999999, 'UTF-8');
Tính số:
$a = mb_substr('abcdefg', 2, mb_strlen('abcdefg', 'UTF-8') - 2, 'UTF-8');
Bỏ tham số charset bằng cách sử dụng
012 không cómb_internal_encoding()
:$temp = mb_internal_encoding(); // prevent action at a distance
mb_internal_encoding('UTF-8');
$a = mb_substr('abcdefg', 2);
mb_internal_encoding($temp);
Là một giải pháp thực tế?
Không hiểu tại sao 'mb_substr ('abcdefg', 2, null, 'UTF-8')' không thực hiện những gì bạn muốn trong các tình huống mà bạn được yêu cầu cung cấp đối số tùy chọn (mã hóa) cuối cùng. – ficuscr
@ficuscr, bởi vì điều đó không xuất ra bất cứ điều gì: http://sandbox.onlinephpfunctions.com/code/407e2a6c7d00f7002054a069fef3ca510061c747 –
http://codepad.viper-7.com/KZ33rR – ficuscr