convert Persian/Arabic numbers to English numbers convert Persian/Arabic numbers to English numbers php php

convert Persian/Arabic numbers to English numbers


Here's a short function:

function convert($string) {    $persian = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];    $arabic = ['٩', '٨', '٧', '٦', '٥', '٤', '٣', '٢', '١','٠'];    $num = range(0, 9);    $convertedPersianNums = str_replace($persian, $num, $string);    $englishNumbersOnly = str_replace($arabic, $num, $convertedPersianNums);    return $englishNumbersOnly;}

You can use the unicode instead of the characters in $persian (I think).


I use this function. It converts both Persian and Arabic digits to English:

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

sample:

echo faTOen("۰۱۲۳۴۵۶۷۸۹٠١٢٣٤٥٦٧٨٩"); // 01234567890123456789

Also you can convert English to Persian the same way:

function enToFa($string) {    return strtr($string, array('0'=>'۰','1'=>'۱','2'=>'۲','3'=>'۳','4'=>'۴','5'=>'۵','6'=>'۶','7'=>'۷','8'=>'۸','9'=>'۹'));}

Or English to Arabic:

function enToAr($string) {    return strtr($string, array('0'=>'٠','1'=>'١','2'=>'٢','3'=>'٣','4'=>'٤','5'=>'٥','6'=>'٦','7'=>'٧','8'=>'٨','9'=>'٩'));}


Because people in the Persian & Arabic region maybe use each other keyboard types, this is the complete solution to convert both types.

Based on @palladium answer.

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