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