21

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

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

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

4

7 回答 7

31

如果您指的是维基百科所说的东部阿拉伯/印度数字,则应该进行简单的替换操作。

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

$str = str_replace($western_arabic, $eastern_arabic, $str);
于 2010-08-02T10:58:21.580 回答
6

定义

  • 西方阿拉伯数字:“1234567890”。
  • 东方阿拉伯数字:“١٢٣٤٥٦٧٨٩٠”。

答案

不久前我写了几个函数(gist.github.com)

演示(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);
}
于 2015-08-16T11:37:05.107 回答
3

或者,您可以从以下网址下载并使用该类:http ://www.phpclasses.org/package/6626-PHP-Convert-numbers-to-Arabic-representation.html (已测试且正在运行)。干杯。

于 2011-11-16T11:48:49.183 回答
0

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

所以例如你想存储数字“1”

在 langauge_EN 中,做这样的事情。number.one=1

然后在langauge_AR中,(假装x是阿拉伯语中的数字“1”,但我猜unicode是首选)number.one=x

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

所以使用 number.+[result from database] 从 langauage_AR 加载此方法在允许切换语言的网页中使用非常广泛。所以任何时候你都需要转换回英文,只需改回language_EN。这不仅适用于数字。吉运

于 2010-08-02T11:59:09.023 回答
0

阿拉伯数字:

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

波斯数字:

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;
}
于 2020-07-12T07:37:42.017 回答
-1

您是否正在尝试将例如 69 转换为 تسعة وستون?试试你是否可以调用谷歌翻译服务或其他翻译服务。否则,您应该编写自己的数字解析器并使用您对阿拉伯语的了解将其翻译成阿拉伯语。(但使用翻译服务会容易得多。)(再说一遍,PHP 可能已经有一个以正确方式写出数字和数字的函数。)

于 2010-08-02T10:28:02.950 回答
-1

使用strtr的简单解决方案:

strtr($str, ['٠','١','٢','٣','٤','٥','٦','٧','٨','٩']);

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

strtr($str, array_flip(['٠','١','٢','٣','٤','٥','٦','٧','٨','٩']));
于 2016-07-02T07:29:20.213 回答