Position actuelle: Accueil> Derniers articles> Comment utiliser MB_encode_numericality et MB_DECode_numericality pour implémenter le codage et le décodage des données?

Comment utiliser MB_encode_numericality et MB_DECode_numericality pour implémenter le codage et le décodage des données?

gitbox 2025-06-10

1. Introduction à la fonction MB_ENCODE_NUMERICALENTITY

MB_ENCODE_NUMERICALENTITY est utilisé pour coder les caractères dans une chaîne qui répond à la plage spécifiée au format d'entité numérique. Le format d'entité numérique est similaire au & # xxxx; Dans HTML, où XXXX est le point de code Unicode correspondant au caractère.

Prototype de fonction:

 string mb_encode_numericentity(string $str, array $convmap, string $encoding = mb_internal_encoding(), bool $is_hex = false)
  • $ str : La chaîne à coder.

  • $ convmap : convertit un tableau de carte pour spécifier quelles gammes de caractères doivent être codées. Le format est un groupe de quatre entiers, représentant le point de code de démarrage, le point de code fin, la valeur de décalage et la valeur de code respectivement.

  • $ Encodage : codage de chaîne, encodage par défaut en interne.

  • $ is_hex : Si défini sur true , l'entité numérique est représentée en hexadécimal.


2. Introduction à la fonction MB_DECODE_NUMERICALENTITY

MB_DECode_numericalentity est utilisé pour convertir les chaînes au format d'entité numérique en chaînes multiples d'origine.

Prototype de fonction:

 string mb_decode_numericentity(string $str, array $convmap, string $encoding = mb_internal_encoding())
  • $ str : La chaîne à décoder.

  • $ convmap : convertit le tableau de carte, avec la même fonction que mb_encode_numericalentity .

  • $ Encoding : Encodage de chaînes.


3. Exemple pratique: codage et décodage des caractères chinois

Supposons que nous devons coder une chaîne contenant chinois, convertir toutes les caractères chinois en entités numériques, puis les décoder et les restaurer en chaîne d'origine.

 <?php
// Définir la carte de transformation,Couverture de la gamme de codage de caractère chinois couramment utilisée
$convmap = [0x4E00, 0x9FFF, 0, 0xFFFF];

// Chaîne à coder
$str = "Bonjour,monde!Hello World!";

// codage,Convertir les caractères chinois en entités numériques
$encoded = mb_encode_numericentity($str, $convmap, "UTF-8");

echo "codage后:\n" . $encoded . "\n";

// décodage,Restaurer les entités numériques aux caractères chinois
$decoded = mb_decode_numericentity($encoded, $convmap, "UTF-8");

echo "décodage后:\n" . $decoded . "\n";
?>

Résultats en cours:

 codage后:
&#20320;&#22909;,&#19990;&#30028;!Hello World!
décodage后:
Bonjour,monde!Hello World!

4. Combiné avec des scénarios d'application d'URL

Parfois, nous devons coder les parties de l'URL avec des caractères multiples pour nous assurer que le processus de transmission est sûr et conforme aux spécifications. Voici un exemple simple, en utilisant un codage d'entité numérique pour la partie de chemin dans l'URL, puis le décoder.

 <?php
$convmap = [0x4E00, 0x9FFF, 0, 0xFFFF];

$url = "https://gitbox.net/chemin/test";

// 只对chemin部分codage
$parsed = parse_url($url);
$encoded_path = mb_encode_numericentity(urldecode($parsed['path']), $convmap, "UTF-8");

// 拼接codage后的 URL
$encoded_url = $parsed['scheme'] . "://" . $parsed['host'] . $encoded_path;

echo "codage后的 URL:\n" . $encoded_url . "\n";

// décodagechemin
$decoded_path = mb_decode_numericentity($encoded_path, $convmap, "UTF-8");

// Restaurer complet URL
$decoded_url = $parsed['scheme'] . "://" . $parsed['host'] . $decoded_path;

echo "décodage后的 URL:\n" . $decoded_url . "\n";
?>

Sortir:

 codage后的 URL:
https://gitbox.net/&#36710;&#x8def;/&#27979;&#35797;
décodage后的 URL:
https://gitbox.net/chemin/test

5. Résumé

  • MB_ENCODE_NUMERICALENTITY peut convertir des caractères dans une plage spécifiée dans une chaîne en codage d'entités numériques, protégeant efficacement les caractères multi-octets contre la corruption pendant la transmission ou le stockage.

  • MB_DECODE_NUMERICALENTITY est responsable de la restauration de l'entité numérique codé aux caractères multipyte correspondants.

  • Ces deux fonctions sont utilisées en conjonction les unes avec les autres et sont très pratiques lorsqu'ils traitent des problèmes d'encodage de chaînes dans des environnements multi-langues, et sont particulièrement adaptés à la gestion des URL avec des caractères spéciaux ou des données texte qui nécessitent une transmission sécurisée.

La maîtrise de ces deux fonctions peut considérablement améliorer la flexibilité et la sécurité du traitement des chaînes à plusieurs octets.