Подтвердить что ты не робот

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

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

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

http://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Arabic_numerals-en.svg/500px-Arabic_numerals-en.svg.png

4b9b3361

Ответ 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) некоторое время назад.

Демо (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);
}

Ответ 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(['٠','١','٢','٣','٤','٥','٦','٧','٨','٩']));