Les fonctions standard de strtolower et de strtoupper ne prennent en charge que les caractères ASCII. Lors du traitement des caractères tels que UTF-8 encodé, ils ne peuvent pas convertir correctement les caractères non anglais. Par exemple:
$text = "Γει? Σου Κ?σμε"; // grec
echo strtoupper($text); // La sortie peut être incorrecte
À l'heure actuelle, MB_Convert_Case est nécessaire:
$text = "Γει? Σου Κ?σμε";
echo mb_convert_case($text, MB_CASE_UPPER, "UTF-8"); // Convertissez correctement en majuscules
Le prototype de fonction de mb_convert_case est le suivant:
string mb_convert_case(string $string, int $mode, ?string $encoding = null)
$ String : la chaîne à convertir.
Mode $ : mode de conversion, principalement:
MB_CASE_UPPER : Convertir en capitalisation
MB_CASE_LOWER : Convertir en minuscules
MB_CASE_TITLE : La capitalisation de la première lettre de chaque mot
$ Encodage : codage des caractères (comme UTF-8, GBK). S'il n'est pas spécifié, mb_internal_encoding () est utilisé par défaut.
Plusieurs fois, les développeurs ignorent les paramètres de codage, ce qui entraîne un mauvais résultat de conversion. Il est recommandé de toujours écrire le code clairement:
$text = "na?ve fa?ade résumé";
echo mb_convert_case($text, MB_CASE_UPPER, 'UTF-8');
Sortie: na? Ve fa? Ade Résumé
MB_CONVERT_CASE ne change pas l'état des caractères chinois (car le chinois n'a pas de haut et de minuscules). Mais vous devez toujours définir le codage UTF-8, sinon la chaîne peut être tronquée.
$text = "Bonjour World";
echo mb_convert_case($text, MB_CASE_UPPER, 'UTF-8'); // Sortir:Bonjour WORLD
Convient pour gérer les titres d'articles, les titres d'actualités, etc .::
$title = "le petit prince";
echo mb_convert_case($title, MB_CASE_TITLE, 'UTF-8'); // Le Petit Prince
S'il y a des balises ou des entités HTML dans le texte, veuillez les supprimer d'abord ou effectuer un traitement approprié, sinon la sortie sera affectée.
$name = trim($_POST['name']);
$cleaned = mb_convert_case($name, MB_CASE_TITLE, 'UTF-8');
Assurez-vous que la saisie de l'utilisateur a un format cohérent lors de l'affichage de l'interface, en particulier pour les noms de documents, les barres de titre, etc.
Supposons que vous ayez besoin de formater et d'afficher le champ Nom dans le profil utilisateur et de prendre en charge l'entrée multilingue:
function formatUserName($name) {
return mb_convert_case(trim($name), MB_CASE_TITLE, 'UTF-8');
}
echo formatUserName("éMILIE du chatelet"); // émilie Du Chatelet
Vous pouvez également encapsuler cette fonction dans l'interface API et normaliser les données JSON renvoyées dans un format unifié. L'exemple est le suivant:
header('Content-Type: application/json');
$data = [
'name' => mb_convert_case('sErGiO péRez', MB_CASE_TITLE, 'UTF-8'),
'profile_url' => 'https://gitbox.net/user/sergioperez'
];
echo json_encode($data);