Почему арабские числа (123) не принимаются в текстовых полях как реальные числа?

при разработке одного из моих сайтов я заметил, что если я вхожу в арабские числа (123), они не интерпретируются как реальные значения числа. Затем я проверил несколько других сайтов только, чтобы обнаружить, что они также не принимают арабские цифры.

Проблема в том, что мой клиент, похоже, требует этой функциональности (принимая арабские числа).. и я понятия не имею, с чего начать. Моя платформа - magento (php).

Ответы

Ответ 1

Чтобы PHP мог принимать арабские цифры или персидские числа (фарси) (12345), Я разработал эту легкую функцию:

<?php

/*
/////////////////////
This function has been created by Abdulfattah alhazmi
Roles:
To convert Arabic/Farsi Numbers (٠‎ - ١‎ - ٢‎ - ٣‎ - ٤‎ - ٥‎ - ٦‎ - ٧‎ - ٨‎ - ٩‎) 
TO the corrosponding English numbers (0-1-2-3-4-5-6-7-8-9)
http://hazmi.co.cc
/////////////////////
*/

function convertArabicNumbers($arabic) {
    $trans = array(
        "&#1632;" => "0",
        "&#1633;" => "1",
        "&#1634;" => "2",
        "&#1635;" => "3",
        "&#1636;" => "4",
        "&#1637;" => "5",
        "&#1638;" => "6",
        "&#1639;" => "7",
        "&#1640;" => "8",
        "&#1641;" => "9",
    );
    return strtr($arabic, $trans);
}
?>

Примечание: Чтобы получить правильный результат из текстового поля в вашей форме, вы должны использовать htmlspecialchars_decode() функция. Например:

$mytext = htmlspecialchars_decode($_POST['mytext']));
$mytext = convertArabicNumbers($mytext);

Чтобы ваш код был безопасным, добавьте strip_tags(). Например:

$mytext = strip_tags(htmlspecialchars_decode($_POST['mytext']));
$mytext = convertArabicNumbers($mytext);

Пожалуйста, не стесняйтесь спрашивать меня, есть ли у вас еще один вопрос об этой функции.

Ответ 3

Странно Abdulfattah Функция Alhazmi не работала со мной, после многих попыток и ошибок, ниже работала со мной.

function convertArabicNumbers($arabic) {
    $trans = array(
        "٠" => "0",
        "١" => "1",
        "٢" => "2",
        "٣" => "3",
        "٤" => "4",
        "٥" => "5",
        "٦" => "6",
        "٧" => "7",
        "٨" => "8",
        "٩" => "9",
    );
    return strtr($arabic, $trans);
}