آرش
4 سال پیش توسط آرش مطرح شد
5 پاسخ

تبدیل اعداد فارسی و عربی به انگلیسی در فرم‌های لاراول

سلام
برای تبدیل به انگلیسیِ فیلدهای عددی‌ که کاربر به فارسی و عربی وارد می‌کنه، آیا بهتره از جاوااسکریپت استفاده بشه و یا داخل کنترلر این تغییر انجام بشه؟ البته تغییر حروف عربی به فارسی هم عملا لازمه اضافه بشه. برای نمایش اعداد به فارسی، الان از کد جی‌کوئری زیر استفاده می‌کنم. اگر بخوام اعداد عربی را هم شامل بشه باید چه تغییری بهش بدم؟

var farsiNumbers = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
    $('.persian_digit').text(function(i, v) {
        var chars = v.split('');
        for (var i = 0; i < chars.length; i++) {
            if (/\d/.test(chars[i])) {
                chars[i] = farsiNumbers[chars[i]];
            }
        }
        return chars.join('');
    })

ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
1

سلام. اینجا یه کاراکتر مپ آنلاین هست آخرش رو ببینین، بعد می‌تونین کپی‌شون کنین:
https://www.online-toolz.com/tools/character-map.php


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
1

سلام
اگر می خواهید اعداد فارسی رو به انگلیسی تبدیل کنید از کلاس زیر استفاده کنید. بهتره داخل کنترلر انجام بشه.

protected function converter($string)
    {
        $persinaDigits1= array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
        $persinaDigits2= array('٩', '٨', '٧', '٦', '٥', '٤', '٣', '٢', '١', '٠');
        $allPersianDigits=array_merge($persinaDigits1, $persinaDigits2);
        $replaces = array('0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9');
        return str_replace($allPersianDigits, $replaces , $string);
    }

می تونید این کلاس رو فراخوانی کنید. دقت کنید اگر می خواهید اعداد رو به int تبدیل کنید از تابع intval() استفاده کنید.
@arashzakeri


آرش
تخصص : Developer
@arashzakeri 4 سال پیش مطرح شد
0

سلام و ممنون
این را که گفتید دیدم، اما متوجه نشدم چطوری باید ازش استفاده کنم
@muhammad


آرش
تخصص : Developer
@arashzakeri 4 سال پیش مطرح شد
0

سلام
استفاده از تابع intval() رو بهش توجه نکرده بودم، ممنونم
@mohaligateway


میلاد هدایت پور
تخصص : در حال پیشرفت
@miladparsi1070 4 سال پیش مطرح شد
2

من خودم برای تبدیل فارسی به انگلیسی و برعکس از این تابع استفاده میکنم

  public function convertNumbers($string, $toPersian = false)
    {
        $en_num = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
        $fa_num = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
        if ($toPersian) return str_replace($en_num, $fa_num, $string);
        else return str_replace($fa_num, $en_num, $string);
    }

نحوه استفاده برای انگلیسی به فارسی:

$this->convertNumbers($item->date,true)

برای تبدیل فارسی به انگلیسی:

$this->convertNumbers($item->date)

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام