Преобразование английских цифр в арабские цифры
Как я могу преобразовать полученные английские номера из базы данных в арабские цифровые символы в PHP.
EDIT: Вот несколько примеров того, как выглядят арабские цифры. Я живу в арабской стране, поэтому, пожалуйста, не заходите, объясняя мне, как выглядят арабские цифры. Если вы можете помочь, хорошо и хорошо. Мне не нужны фальшивые идеи.
http://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Arabic_numerals-en.svg/500px-Arabic_numerals-en.svg.png
Ответы
Ответ 1
Если вы имеете в виду, что Википедия называет восточные арабские/знаковые цифры, должна выполняться простая операция замены.
$western_arabic = array('0','1','2','3','4','5','6','7','8','9');
$eastern_arabic = array('٠','١','٢','٣','٤','٥','٦','٧','٨','٩');
$str = str_replace($western_arabic, $eastern_arabic, $str);
Ответ 2
Определения
- Западные арабские цифры: "1234567890".
- Восточные арабские цифры: "1234567890".
Ответ
Я написал пару функций (gist.github.com) некоторое время назад.
echo arabic_w2e("1234567890"); // Outputs: ١٢٣٤٥٦٧٨٩٠
echo arabic_e2w("١٢٣٤٥٦٧٨٩٠"); // Outputs: 1234567890
код
<?php
/**
* Converts numbers in string from western to eastern Arabic numerals.
*
* @param string $str Arbitrary text
* @return string Text with western Arabic numerals converted into eastern Arabic numerals.
*/
function arabic_w2e($str)
{
$arabic_eastern = array('٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩');
$arabic_western = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
return str_replace($arabic_western, $arabic_eastern, $str);
}
/**
* Converts numbers from eastern to western Arabic numerals.
*
* @param string $str Arbitrary text
* @return string Text with eastern Arabic numerals converted into western Arabic numerals.
*/
function arabic_e2w($str)
{
$arabic_eastern = array('٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩');
$arabic_western = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
return str_replace($arabic_eastern, $arabic_western, $str);
}
Ответ 3
Или вы можете просто загрузить и использовать этот класс: http://www.phpclasses.org/package/6626-PHP-Convert-numbers-to-Arabic-representation.html (Протестировано и работает). Приветствия.
Ответ 4
Вы пытаетесь преобразовать, например. Шестьдесят девять - تسعة وستون? Попробуйте, если вы можете позвонить в службу Google Translate или другую службу переводов. В противном случае вы должны написать свой собственный numeral парсер и использовать свои знания арабского языка для перевода на арабский язык. (Но использование услуги перевода было бы намного проще.) (Опять же, PHP может уже иметь функцию, которая правильно записывает числа и цифры.)
Ответ 5
Я предлагаю вам попробовать использовать файл ресурсов для разных языков, особенно если содержимое известно.
Пример:
2 файла языка файла, 1 named language_EN, другой язык_AR
где langauge_EN хранит значения на английском языке и language_AR для арабского.
поэтому, например, вы хотите сохранить номер "1"
в langauge_EN, сделайте что-нибудь подобное.
number.one = 1
то в langauge_AR, (подразумевается, что x является числом "1" в арабском, но я думаю, что unicode является предпочтительным)
number.one = х
поэтому после того, как вы получите из базы данных и зная, что это номер,
ваш исходный результат получается "одним".
поэтому используйте номер. + [результат из базы данных] для загрузки из langauage_AR
Этот метод довольно широко используется в веб-страницах, которые позволяют переключать язык.
Поэтому в любое время вам нужно вернуться на английский, просто перейдите на язык_EN.
Это работает не только для числа.
Gd Luck
Ответ 6
Простое решение с strtr:
strtr($str, ['٠','١','٢','٣','٤','٥','٦','٧','٨','٩']);
Для перевода с восточного арабского на арабский:
strtr($str, array_flip(['٠','١','٢','٣','٤','٥','٦','٧','٨','٩']));