Maison  >  Article  >  développement back-end  >  Comment réaliser la fonction de conversion de nombres en lettres anglaises en php

Comment réaliser la fonction de conversion de nombres en lettres anglaises en php

PHPz
PHPzoriginal
2023-04-21 09:11:561056parcourir

PHP est un langage de programmation largement utilisé avec un riche ensemble de fonctions et de modules d'extension qui peuvent facilement répondre à divers besoins. L'une des exigences courantes consiste à convertir les chiffres en lettres anglaises, ce qui est très utile dans certains scénarios d'application, tels que la génération de codes de vérification aléatoires, la génération d'identifiants uniques, etc.

Alors, comment réaliser la fonction de conversion de chiffres en lettres anglaises via PHP ? Ci-dessous, nous présenterons deux méthodes pour réaliser cette fonction.

Méthode 1 : Utiliser la conversion de code ASCII

Le code ASCII est une norme pour le codage de caractères dans les ordinateurs. Chaque caractère correspond à un code ASCII unique. En code ASCII, la lettre majuscule A est 65 et la lettre minuscule a est 97. Par conséquent, nous pouvons utiliser le code ASCII pour convertir des nombres en lettres anglaises.

La méthode d'implémentation spécifique est la suivante :

function numberToLetter($num){
    $letter = "";
    while($num > 0){
        $temp = ($num - 1) % 26;
        $letter = chr(65 + $temp) . $letter;
        $num = intval(($num - $temp) / 26);
    }
    return $letter;
}

Dans cette fonction, $num représente le nombre à convertir, $letter représente le résultat et $temp représente la lettre correspondant au nombre actuel.

Tout d'abord, on diminue $num de 1, car le nombre correspondant à A est 1 au lieu de 0. Ensuite, on utilise $num-1 pour prendre le reste de 26 afin d'obtenir la position de la lettre correspondant au numéro actuel. Par exemple, $num-1 module 26 pour obtenir 0, ce qui signifie que le nombre actuel correspond à A. Ensuite, nous utilisons chr(65+$temp) pour convertir la position en la lettre correspondante. Enfin, la lettre est ajoutée au début de $letter et $num est mis à jour pour être la partie entière divisée par 26 afin de gérer le nombre suivant. Une fois la boucle terminée, $letter est le résultat final.

Par exemple, en appelant numberToLetter(12345), le résultat renvoyé est "BMC".

L'avantage de cette méthode est qu'elle est simple et facile à comprendre. L'inconvénient est qu'elle ne peut prendre en charge que 26 lettres majuscules et n'est pas compatible avec d'autres langues.

Méthode 2 : Utiliser la bibliothèque d'extensions

Si vous avez besoin de convertir vers davantage de jeux de caractères ou si vous souhaitez être compatible avec d'autres langages, vous pouvez utiliser la bibliothèque d'extensions de PHP pour y parvenir. Parmi elles, les bibliothèques d'extensions les plus couramment utilisées sont intl et iconv. Ici, nous prenons l'extension intl comme exemple pour présenter comment convertir des nombres en différents jeux de caractères.

Tout d’abord, installez l’extension intl. Sur les systèmes Linux, vous pouvez utiliser la commande suivante pour installer :

sudo apt-get install php-intl

Sur les systèmes Windows, vous devez activer l'extension dans le fichier php.ini :

extension=php_intl.dll

Une fois l'installation terminée, vous pouvez utiliser la classe NumberFormatter fournie par l'extension internationale pour la conversion.

La méthode d'implémentation spécifique est la suivante :

function numberToLetter($num, $locale){
    $fmt = new NumberFormatter($locale, NumberFormatter::SPELLOUT);
    return $fmt->format($num);
}

Dans cette fonction, $num représente le nombre à convertir, et $locale représente le jeu de caractères à convertir, comme les lettres anglaises, les chiffres chinois, les chiffres français, etc. NumberFormatter::SPELLOUT signifie utiliser la méthode d'orthographe pour la conversion.

Par exemple, pour convertir le nombre 12345 en nombres chinois, vous pouvez utiliser numberToLetter(12345, "zh_CN"). Pour convertir le nombre 12345 en lettres anglaises, vous pouvez utiliser numberToLetter(12345, "en_US").

En utilisant l'extension intl, nous pouvons facilement convertir des nombres en différents jeux de caractères avec une bonne flexibilité et compatibilité.

Résumé

Cet article présente deux méthodes pour réaliser la fonction de conversion des nombres PHP en lettres anglaises. La première méthode consiste à utiliser le code ASCII pour la conversion, qui est simple et facile à comprendre, mais ne peut prendre en charge que 26 lettres majuscules et n'est pas compatible avec d'autres langues ; la deuxième méthode consiste à utiliser la classe NumberFormatter fournie par l'extension intl pour la conversion ; , qui peut prendre en charge une variété de jeux de caractères, avec une meilleure flexibilité et compatibilité. Selon les différents besoins, choisir la méthode appropriée peut accomplir la tâche plus efficacement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn