Преобразование индо-арабских цифр в арабские цифры на PHP
Арабские цифры, к которым мы привыкли, используются в большинстве стран мира и составляют набор из десяти знаков: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; для записи чисел в десятичной системе счисления. Но арабские и индо-арабские цифры являются видоизменёнными начертаниями индийских цифр, приспособленными к арабскому письму.
| Арабские цифры, используемые в арабских странах Африки (кроме Египта) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| Индо-арабские цифры, используемые в арабских странах Азии и в Египте | ٠ | ١ | ٢ | ٣ | ٤ | ٥ | ٦ | ٧ | ٨ | ٩ |
| Персидские цифры | ۰ | ۱ | ۲ | ۳ | ۴ | ۵ | ۶ | ۷ | ۸ | ۹ |
| Индийские цифры (в письме деванагари), используемые в Индии | ० | १ | २ | ३ | ४ | ५ | ६ | ७ | ८ | ९ |
Само название «арабские цифры» образовалось исторически, из-за того, что именно арабы распространяли десятичную позиционную систему счисления. Цифры, которые используют в арабских странах Азии и в Египте (называемые арабами "индийскими цифрами"), по начертанию сильно отличаются от используемых в европейских странах.
Преобразование индо-арабских цифр в арабские цифры может понадобиться например для корректной валидации номера телефона. Использование функции str_replace не дает желаемого результата. Но разбив строку на символы можно их сравнить и заменить, и в дальнейшем объединить:
<?php
function arabic_convert($str = ''){
$str_list = preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY);
if( !empty($str_list) ){
$transform_symbols = array(
'٠' => '0',
'١' => '1',
'٢' => '2',
'٣' => '3',
'٤' => '4',
'٥' => '5',
'٦' => '6',
'٧' => '7',
'٨' => '8',
'٩' => '9',
);
$str_transform = array();
foreach ($str_list as $str_item){
if( isset($transform_symbols[$str_item]) ){
$str_transform[] = $transform_symbols[$str_item];
}else{
$str_transform[] = $str_item;
}
}
$str = implode('', $str_transform);
}
return $str;
}
Добавить комментарий