Преобразование индо-арабских цифр в арабские цифры на 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; }
Добавить комментарий