Преобразование арабских чисел в английские эквиваленты является общим требованием во многих приложениях. В этой статье блога мы рассмотрим различные методы достижения такого преобразования с помощью PHP. Мы предоставим примеры кода для каждого метода, что позволит вам реализовать решение, которое наилучшим образом соответствует вашим потребностям.
Метод 1: использование пользовательских массивов сопоставления
Один из подходов заключается в создании пользовательских массивов сопоставления для сопоставления арабских цифр с их английскими аналогами. Вот пример фрагмента кода:
function arabicToEnglish($number) {
$arabicDigits = array('٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩');
$englishDigits = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$englishNumber = str_replace($arabicDigits, $englishDigits, $number);
return $englishNumber;
}
// Usage
$arabicNumber = '١٢٣٤٥';
$englishNumber = arabicToEnglish($arabicNumber);
echo $englishNumber; // Output: 12345
Метод 2: использование расширения Intl
Расширение PHP Intl предоставляет мощный набор функций для работы с интернационализацией. Мы можем использовать его для преобразования арабских чисел в английские. Вот пример:
function arabicToEnglish($number) {
$formatter = new NumberFormatter('en', NumberFormatter::DECIMAL);
$englishNumber = $formatter->parse($number);
return $englishNumber;
}
// Usage
$arabicNumber = '١٢٣٤٥';
$englishNumber = arabicToEnglish($arabicNumber);
echo $englishNumber; // Output: 12345
Метод 3: использование регулярных выражений
Другой подход заключается в использовании регулярных выражений для замены арабских цифр их английскими аналогами. Вот пример:
function arabicToEnglish($number) {
$arabicDigits = array('٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩');
$englishDigits = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$pattern = '/[' . implode('', $arabicDigits) . ']/u';
$englishNumber = preg_replace_callback($pattern, function($match) use ($arabicDigits, $englishDigits) {
return $englishDigits[array_search($match[0], $arabicDigits)];
}, $number);
return $englishNumber;
}
// Usage
$arabicNumber = '١٢٣٤٥';
$englishNumber = arabicToEnglish($arabicNumber);
echo $englishNumber; // Output: 12345
В этой статье мы рассмотрели три различных метода преобразования арабских чисел в английские в PHP. Вы можете выбрать метод, соответствующий вашим требованиям, и интегрировать его в свое приложение. Независимо от того, предпочитаете ли вы использовать собственные массивы сопоставлений, расширение Intl или регулярные выражения, эти решения помогут вам добиться точных и эффективных преобразований.
Не забудьте выбрать метод, который соответствует конкретным потребностям вашего проекта и учитывает вопросы производительности и совместимости.
Реализуя эти подходы, вы сможете легко преобразовывать арабские цифры в английские и повысить удобство работы с вашими PHP-приложениями.