php-intl
Installation
SKILL.md
PHP Internationalization & Encoding
UTF-8 Everywhere
// Set early — affects all mb_* functions
mb_internal_encoding('UTF-8');
header('Content-Type: text/html; charset=UTF-8');
// Use mb_* for all string operations on user text
$len = mb_strlen($str); // NOT strlen() — counts bytes, not chars
$upper = mb_strtoupper($str); // NOT strtoupper()
$sub = mb_substr($str, 0, 10); // NOT substr()
$pos = mb_strpos($str, $needle);