راکت

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

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('');
    })
آرش
آرش
@arashzakeri
ثبت پرسش جدید

پاسخ‌ها

5
Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

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

شاید پاسخ شما همین‌جا باشد

آرش
آرش
@arashzakeri

تخصص: Developer

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

آرش
آرش
@arashzakeri

تخصص: Developer

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

میلاد هدایت پور
میلاد هدایت پور
@miladparsi1070

تخصص: در حال پیشرفت

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

  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)

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

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