while developing one of my sites, i noticed that if I enter arabic numbers (١٢٣), they are not interpreted as real number values. Then, I tested a few other sites only to find that they also don’t accept arabic numbers.
The problem is, my client seems to require this functionality (accepting arabic numbers).. and I have no idea where to start. My platform is magento (php).
Advertisement
Answer
To allow PHP to accept the Arabic numbers or Persian numbers (Farsi) (١٢٣٤٥), I developed this easy function:
<?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( "٠" => "0", "١" => "1", "٢" => "2", "٣" => "3", "٤" => "4", "٥" => "5", "٦" => "6", "٧" => "7", "٨" => "8", "٩" => "9", ); return strtr($arabic, $trans); } ?>
Note: TO GET THE CORRECT RESULT from text field in your form, you have to use the htmlspecialchars_decode()
function. For example:
$mytext = htmlspecialchars_decode($_POST['mytext'])); $mytext = convertArabicNumbers($mytext);
To keep your code safe, add strip_tags()
. For example:
$mytext = strip_tags(htmlspecialchars_decode($_POST['mytext'])); $mytext = convertArabicNumbers($mytext);
Please don’t hesitate to ask me if you have any further question about this function.