почему арабские числа (١٢٣) не принимаются в текстовых полях как действительные числа? - PullRequest
15 голосов
/ 15 ноября 2011

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

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

Ответы [ 3 ]

6 голосов
/ 15 ноября 2011

AFAIK, вам нужно установить пакет арабского языка с ./mage install - см. http://www.magentocommerce.com/magento-connect/Ahmed+J.+Hadi/extension/353/magento-community-modules--arabic-saudi-arabia-language-pack

4 голосов
/ 24 сентября 2012

Чтобы позволить PHP принимать арабские или персидские числа (фарси) (١٢٣٤٥), я разработал эту простую функцию:

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

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

1 голос
/ 06 июня 2015

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

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