Beginner LevelPHP 8+
Why must you use mb_strlen() and mb_substr() instead of strlen() and substr() for UTF-8 multibyte strings?
❓ Interview Prompt: Explain single-byte ASCII string functions vs multibyte (mbstring) UTF-8 functions and preventing string corruption.
Standard PHP string functions ('strlen()', 'substr()', 'strpos()') are designed for single-byte ASCII encodings where 1 character = 1 byte.
The Multibyte Problem:
Unicode UTF-8 characters (accented characters 'é', non-Latin alphabets, and emojis '😊') take between 2 to 4 bytes per character in memory!
•
Standard 'strlen("hello 😊")' counts raw bytes, returning '10' instead of 7 characters!
•
Standard 'substr()' will chop multibyte UTF-8 characters in half, resulting in corrupted, invalid character output.
Solution:
Always use the *'mb_' (Multibyte String)** extension functions ('mb_strlen()', 'mb_substr()', 'mb_strpos()') for user-facing UTF-8 text processing.
Code Implementation Example
php
<?php
$str = "Hello 😊"; // 6 text characters, but emoji takes 4 bytes!
// 1. Single-byte strlen counts raw bytes (INCORRECT for UTF-8!)
echo strlen($str); // Outputs: 10
// 2. Multibyte mb_strlen counts actual unicode characters!
echo mb_strlen($str, 'UTF-8'); // Outputs: 7
// 3. Safe multibyte string truncation
echo mb_substr($str, 0, 7, 'UTF-8'); // Outputs: Hello 😊💡Comparing single-byte strlen() byte count vs multibyte mb_strlen() character count.
🎯 Interview Key Takeaway
Use mb_* functions (mb_strlen, mb_substr) to accurately process UTF-8 multibyte text and emojis without string corruption.
#mbstring#UTF-8#Unicode#Strings#Beginner
Back to all PHP 8+ Questions→