راکت
آرش
آرش
توسط آرش مطرح شد
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
Muhammad
تخصص :Back-End Developer
@muhammad5 سال پیشمطرح شد
1

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


moha li
moha li
تخصص :توسعه دهنده لاراول و Vue
@mohaligateway5 سال پیشمطرح شد
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
@arashzakeri5 سال پیشمطرح شد
0

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


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

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


میلاد هدایت پور
میلاد هدایت پور
تخصص :در حال پیشرفت
@miladparsi10705 سال پیشمطرح شد
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)

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

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