Преобразование английских цифр в арабские цифры

Как я могу преобразовать полученные английские номера из базы данных в арабские цифровые символы в PHP.

EDIT: Вот несколько примеров того, как выглядят арабские цифры. Я живу в арабской стране, поэтому, пожалуйста, не заходите, объясняя мне, как выглядят арабские цифры. Если вы можете помочь, хорошо и хорошо. Мне не нужны фальшивые идеи.

http://img.ruphp.com/php/500px-Arabic_numerals-en.svg.png

Solutions Collecting From Web of "Преобразование английских цифр в арабские цифры"

Если вы имеете в виду то, что Википедия называет восточными арабскими цифрами / знаками , следует выполнить операцию простой замены.

$western_arabic = array('0','1','2','3','4','5','6','7','8','9'); $eastern_arabic = array('٠','١','٢','٣','٤','٥','٦','٧','٨','٩'); $str = str_replace($western_arabic, $eastern_arabic, $str); 

Определения

  • Западные арабские цифры: «1234567890».
  • Восточные арабские цифры: «1234567890».

Ответ

Я написал несколько функций (gist.github.com) некоторое время назад.

Демо (3v4l.org)

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

Или вы можете просто загрузить и использовать этот класс: http://www.phpclasses.org/package/6626-PHP-Convert-numbers-to-Arabic-representation.html (Протестировано и работает). Приветствия.

Вы пытаетесь преобразовать, например, Sixty-9 to تسعة وستون? Попробуйте, если вы можете позвонить в службу Google Translate или другую службу переводов. В противном случае вы должны написать свой собственный синтаксический анализатор чисел и использовать свои знания арабского языка для перевода на арабский язык. (Но использование услуги перевода было бы намного проще.) (Опять же, PHP может уже иметь функцию, которая правильно записывает числа и цифры).

Я предлагаю вам попробовать использовать файл ресурсов для разных языков, особенно если содержимое известно. Пример: 2 файла с файловыми языками, 1 с именем language_EN, другой язык_AR, где langauge_EN хранит значения на английском языке и язык_AR для арабского.

поэтому, например, вы хотите сохранить номер «1»,

в langauge_EN, сделайте что-нибудь подобное. number.one = 1

то в langauge_AR, (притворяется x – число «1» в арабском, но я думаю, что предпочтительным является unicode) number.one = x

поэтому после того, как вы получите из базы данных и зная, что это номер, ваш исходный результат получается «одним».

поэтому используйте номер. + [результат из базы данных] для загрузки из langauage_AR. Этот метод довольно широко используется в веб-страницах, которые позволяют переключать язык. Поэтому в любое время вам нужно вернуться на английский, просто перейдите на язык_EN. Это работает не только для числа. GD Luck

Простое решение с strtr :

 strtr($str, ['٠','١','٢','٣','٤','٥','٦','٧','٨','٩']); 

Для перевода с восточного арабского на арабский:

 strtr($str, array_flip(['٠','١','٢','٣','٤','٥','٦','٧','٨','٩']));