21 votes

Convertir les chiffres anglais en chiffres arabes

Comment puis-je convertir les nombres anglais récupérés dans la base de données en symboles numéraux arabes en PHP.

EDIT : Voici quelques exemples de ce à quoi ressemblent les chiffres arabes. Je vis dans un pays arabe, alors s'il vous plaît, n'allez pas m'expliquer à quoi ressemblent les chiffres arabes. Si vous pouvez aider, tant mieux. Je n'ai pas besoin d'idées bidons.

http://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Arabic_numerals-en.svg/500px-Arabic_numerals-en.svg.png

31voto

Pekka 웃 Points 249607

Si vous faites référence à ce que Wikipedia appelle arabe oriental / chiffres indic une simple opération de remplacement devrait suffire.

$western_arabic = array('0','1','2','3','4','5','6','7','8','9');
$eastern_arabic = array('٠','١','٢','٣','٤','٥','٦','٧','٨','٩');

$str = str_replace($western_arabic, $eastern_arabic, $str);

6voto

Nabil Kadimi Points 2109

Définitions

  • Chiffres arabes occidentaux : "1234567890".
  • Chiffres arabes orientaux : "١٢٣٤٥٦٧٨٩٠".

La réponse

J'ai écrit quelques fonctions (gist.github.com) il y a quelque temps.

Démo (3v4l.org)

    echo arabic_w2e("1234567890"); // Outputs: ١٢٣٤٥٦٧٨٩٠
    echo arabic_e2w("١٢٣٤٥٦٧٨٩٠"); // Outputs: 1234567890

Code

<?php

/**
 * Converts numbers in string from western to eastern Arabic numerals.
 *
 * @param  string $str Arbitrary text
 * @return string Text with western Arabic numerals converted into eastern Arabic numerals.
 */
function arabic_w2e($str)
{
    $arabic_eastern = array('٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩');
    $arabic_western = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    return str_replace($arabic_western, $arabic_eastern, $str);
}

/**
 * Converts numbers from eastern to western Arabic numerals.
 *
 * @param  string $str Arbitrary text
 * @return string Text with eastern Arabic numerals converted into western Arabic numerals.
 */
function arabic_e2w($str)
{
    $arabic_eastern = array('٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩');
    $arabic_western = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    return str_replace($arabic_eastern, $arabic_western, $str);
}

3voto

Mario Awad Points 633

Ou vous pouvez simplement télécharger et utiliser cette classe à partir de : http://www.phpclasses.org/package/6626-PHP-Convert-numbers-to-Arabic-representation.html (Testé et fonctionnant). Merci.

0voto

C_Rance Points 428

Je vous suggère d'essayer d'utiliser le fichier de ressources pour une autre langue, surtout si le contenu est connu. Exemple : 2 fichiers de langue, 1 nommé langauge_EN, un autre langauge_AR où langauge_EN est pour stocker les valeurs en anglais, et language_AR pour l'arabe.

Donc, par exemple, vous voulez stocker le nombre "1".

en langauge_EN, faites quelque chose comme ceci. nombre.un=1

puis dans langauge_AR, (en prétendant que x est le chiffre "1" en arabe, mais je suppose que l'unicode est préférable) nombre.un=x

donc après avoir récupéré de la base de données et sachant que c'est un numéro, votre résultat brut est "un".

utilisez donc numéro.+[résultat de la base de données] pour charger à partir de la langue_AR Cette méthode est assez largement utilisée dans les pages web qui permettent de changer de langue. Ainsi, à tout moment, si vous avez besoin de revenir à l'anglais, il suffit de revenir à la langue_FR. Cela ne fonctionne pas seulement pour les numéros. Bonne chance

0voto

Sina Saeedi Points 23

Les chiffres arabes :

function to_arabic_number($number)
{
    $number = str_replace("1","۱",$number);
    $number = str_replace("2","۲",$number);
    $number = str_replace("3","۳",$number);
    $number = str_replace("4","٤",$number);
    $number = str_replace("5","٥",$number);
    $number = str_replace("6","٦",$number);
    $number = str_replace("7","۷",$number);
    $number = str_replace("8","۸",$number);
    $number = str_replace("9","۹",$number);
    $number = str_replace("0","۰",$number);
    return $number;
}

Les nombres persans :

function to_persian_number($number)
{
    $number = str_replace("1","۱",$number);
    $number = str_replace("2","۲",$number);
    $number = str_replace("3","۳",$number);
    $number = str_replace("4","۴",$number);
    $number = str_replace("5","۵",$number);
    $number = str_replace("6","۶",$number);
    $number = str_replace("7","۷",$number);
    $number = str_replace("8","۸",$number);
    $number = str_replace("9","۹",$number);
    $number = str_replace("0","۰",$number);
    return $number;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X