Position actuelle: Accueil> Derniers articles> Comment gérer les jeux de caractères multi-gobets (tels que UTF-8) dans MB_Convert_Case

Comment gérer les jeux de caractères multi-gobets (tels que UTF-8) dans MB_Convert_Case

gitbox 2025-05-29

Pourquoi utiliser MB_Convert_Case au lieu de Strtolower ou Strtoupper ?

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

Explication détaillée des paramètres

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.


Partager des compétences pratiques

1. Spécifiez clairement le codage

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é

2. Comment gérer le chinois?

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

3. Capitalisation de la première lettre (format de titre)

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.

4. Utiliser avec le nettoyage des données du formulaire

 $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.


Exemple d'application: normalisation du format d'affichage du profil utilisateur

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);