将波斯语/阿拉伯数字转换为英文数字

Roo*_*125 28 php unicode

如何通过简单的功能将波斯语/阿拉伯数字转换为英文数字

波斯语/阿拉伯数字:

?   //  -> 0
?   //  -> 1
?   //  -> 2
?   //  -> 3
?   //  -> 4
?   //  -> 5
?   //  -> 6
?   //  -> 7
?   //  -> 8
?   //  -> 9
Run Code Online (Sandbox Code Playgroud)

unicode上的数字:

$num0="۰";
$num1="۱";
$num2="۲";
$num3="۳";
$num4="۴";
$num5="۵";
$num6="۶";
$num7="۷";
$num8="۸";
$num9="۹";
Run Code Online (Sandbox Code Playgroud)

Pal*_*ium 64

这是一个简短的功能:

function convert($string) {
    $persian = ['?', '?', '?', '?', '?', '?', '?', '?', '?', '?'];
    $arabic = ['?', '?', '?', '?', '?', '?', '?', '?', '?','?'];

    $num = range(0, 9);
    $convertedPersianNums = str_replace($persian, $num, $string);
    $englishNumbersOnly = str_replace($arabic, $num, $convertedPersianNums);

    return $englishNumbersOnly;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用unicode而不是$persian(我认为)中的字符.

  • 复制并粘贴此代码时,阿拉伯语顺序将被颠倒,小心! (2认同)

Sae*_*esi 20

我用这个功能.它将波斯语和阿拉伯语数字转换为英语:

function faTOen($string) {
    return strtr($string, array('?'=>'0', '?'=>'1', '?'=>'2', '?'=>'3', '?'=>'4', '?'=>'5', '?'=>'6', '?'=>'7', '?'=>'8', '?'=>'9', '?'=>'0', '?'=>'1', '?'=>'2', '?'=>'3', '?'=>'4', '?'=>'5', '?'=>'6', '?'=>'7', '?'=>'8', '?'=>'9'));
}
Run Code Online (Sandbox Code Playgroud)

样品:

echo faTOen("????????????????????"); // 01234567890123456789
Run Code Online (Sandbox Code Playgroud)

您也可以使用相同的方式将英语转换为波斯语:

function enToFa($string) {
    return strtr($string, array('0'=>'?','1'=>'?','2'=>'?','3'=>'?','4'=>'?','5'=>'?','6'=>'?','7'=>'?','8'=>'?','9'=>'?'));
}
Run Code Online (Sandbox Code Playgroud)

或英语到阿拉伯语:

function enToAr($string) {
    return strtr($string, array('0'=>'?','1'=>'?','2'=>'?','3'=>'?','4'=>'?','5'=>'?','6'=>'?','7'=>'?','8'=>'?','9'=>'?'));
}
Run Code Online (Sandbox Code Playgroud)


Roo*_*125 11

由于波斯语和阿拉伯语区域的人可能使用彼此的语言,这是转换这两种类型的完整解决方案.

function convert2english($string) {
    $newNumbers = range(0, 9);
    // 1. Persian HTML decimal
    $persianDecimal = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
    // 2. Arabic HTML decimal
    $arabicDecimal = array('٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩');
    // 3. Arabic Numeric
    $arabic = array('?', '?', '?', '?', '?', '?', '?', '?', '?', '?');
    // 4. Persian Numeric
    $persian = array('?', '?', '?', '?', '?', '?', '?', '?', '?', '?');

    $string =  str_replace($persianDecimal, $newNumbers, $string);
    $string =  str_replace($arabicDecimal, $newNumbers, $string);
    $string =  str_replace($arabic, $newNumbers, $string);
    return str_replace($persian, $newNumbers, $string);
}
Run Code Online (Sandbox Code Playgroud)


ima*_*man 8

这个更好.我们有两种阿拉伯语和波斯语的数字.我们必须改变一切.

function convert($string) {
    $persinaDigits1= array('?', '?', '?', '?', '?', '?', '?', '?', '?', '?');
    $persinaDigits2= array('?', '?', '?', '?', '?', '?', '?', '?', '?', '?');
    $allPersianDigits=array_merge($persinaDigits1, $persinaDigits2);
    $replaces = array('0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9');
    return str_replace($allPersianDigits, $replaces , $string);
}
Run Code Online (Sandbox Code Playgroud)


谢谢@Palladium

复制代码时要小心!检查两次如何在编辑器中显示数组,否则您将遇到麻烦!


Ign*_*ams 5

$fmt = numfmt_create('fa', NumberFormatter::DECIMAL);
echo numfmt_parse($fmt, "?") . "\n";
// 5
Run Code Online (Sandbox Code Playgroud)

  • 您是否忘记安装intl扩展,就像文档说的那样? (2认同)

小智 5

要将所有波斯数字转换为英文格式,您可以使用此功能:

function Convertnumber2english($srting) {

        $srting = str_replace('?', '0', $srting);
        $srting = str_replace('?', '1', $srting);
        $srting = str_replace('?', '2', $srting);
        $srting = str_replace('?', '3', $srting);
        $srting = str_replace('?', '4', $srting);
        $srting = str_replace('?', '5', $srting);
        $srting = str_replace('?', '6', $srting);
        $srting = str_replace('?', '7', $srting);
        $srting = str_replace('?', '8', $srting);
        $srting = str_replace('?', '9', $srting);

        return $srting;
    }
Run Code Online (Sandbox Code Playgroud)