代码之家  ›  专栏  ›  技术社区  ›  HyderA

将英文数字转换为阿拉伯数字

  •  15
  • HyderA  · 技术社区  · 15 年前

    如何将从数据库中检索到的英文数字转换为PHP中的阿拉伯数字符号。

    编辑:这里有一些阿拉伯数字的例子。我住在阿拉伯国家,所以请不要到处向我解释阿拉伯数字是什么样子的。如果你能帮忙,好的,好的。我不需要虚假的想法。

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

    6 回复  |  直到 8 年前
        1
  •  23
  •   Nabil Kadimi    10 年前

    如果你指的是维基百科所说的 eastern arabic / indic numerals ,应执行简单的替换操作。

    $western_arabic = array('0','1','2','3','4','5','6','7','8','9');
    $eastern_arabic = array('Ù ','Ù¡','Ù¢','Ù£','Ù¤','Ù¥','Ù¦','Ù§','Ù¨','Ù©');
    
    $str = str_replace($western_arabic, $eastern_arabic, $str);
    
        2
  •  6
  •   Nabil Kadimi    10 年前

    定义

    • 西方阿拉伯数字:“1234567890”。
    • 东方阿拉伯数字:“_、_、_、_、_”。

    答案

    我写 a couple of functions (gist.github.com) 一会儿回来。

    Demo (3v4l.org)

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

    代码

    <?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);
    }
    
        3
  •  3
  •   Mario Awad    14 年前

    或者您可以从以下网站下载和使用此类: http://www.phpclasses.org/package/6626-PHP-Convert-numbers-to-Arabic-representation.html (测试和工作)。干杯。

        4
  •  0
  •   Wim ten Brink    15 年前

    你是不是想把69岁的孩子转变成老年痴呆症的孩子?如果你可以打电话给谷歌翻译服务或其他翻译服务,试试看。否则,你应该自己写 numeral 并使用您的阿拉伯语知识将其翻译为阿拉伯语。(但使用翻译服务要容易得多。)(同样,PHP可能已经有了一个函数,可以用正确的方式写出数字和数字。)

        5
  •  0
  •   C_Rance    15 年前

    我建议您尝试使用不同语言的资源文件,尤其是在内容已知的情况下。 例子: 2个文件语言文件,1个命名语言,另一种语言 其中,langauge_en用英语存储值,而语言为阿拉伯语。

    例如,你想储存数字“1”

    在兰加文,做点类似的事情。 一号=1

    然后在langauge_ar(假设x是阿拉伯数字“1”,但我想Unicode是首选) 一号

    所以当你从数据库中检索并知道它是数字之后, 你的原始结果是“一”。

    所以使用number.+[数据库结果]从语言加载 这种方法在允许语言切换的网页中被广泛使用。 所以在任何时候你都需要转换回英语,只需转换回语言。 这不仅适用于数字。 幸运女神

        6
  •  -1
  •   mustafa.0x    10 年前

    简单解决方案 strtr :

    strtr($str, ['Ù ','Ù¡','Ù¢','Ù£','Ù¤','Ù¥','Ù¦','Ù§','Ù¨','Ù©']);
    

    要从东方阿拉伯语转换为阿拉伯语:

    strtr($str, array_flip(['Ù ','Ù¡','Ù¢','Ù£','Ù¤','Ù¥','Ù¦','Ù§','Ù¨','Ù©']));