تالار گفتمان nCIS.ir

نسخه‌ی کامل: تقویم و اعداد فارسی در دل PHP !
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
شاید خیلی ها ندوند (منم تا امروز نمی دونستم!) ولی PHP از ورژن ۵٫۳ به بعد با استفاده از ICU از تقویم فارسی پشتیبانی می کند.

اول باید ببنید که extension مربوط به internationalization فعال هست یا نه برای این کار این دستور را اجرا کنید.
echo '<pre>' . print_r(get_loaded_extensions(),true) . '</pre>' . PHP_EOL;
لیست تمام extension ها را به صورت یک آرایه بر می گرداند؛ intl مربوط به extension مورد نظر ماست!
اگر intl نبود، باید فایل php.ini را ویرایش کنید و کامنت این خط را بر دارید.
extension=intl;
دانلود نرم افزار XAMPP
سرور را ریستارت کرده؛ بعد از فعال سازی این extension حالا می توانید از کلاس IntlDateFormatter استفاده کنید.
به عنوان مثال این تکه کد[/align]
$date_format='EEEE، d MMMM Y';
$fmt = new IntlDateFormatter("fa_IR@calendar=persian", IntlDateFormatter::FULL, IntlDateFormatter::FULL,
"Asia/Tehran", IntlDateFormatter::TRADITIONAL,$date_format);
echo $fmt->format(intval(time()));
تاریخ امروز ره به این صورت نمایش می دهد.
کد:
یکشنبه، ۲۸ دی ۱۳۹۹
برای اطلاع از فرمت تاریخ ICU می توانید به این لینک مراجعه کنید.
اعداد فارسی

با استفاده از کلاس NumberFormatter که از همان intl استفاده می کند، می توانید این کار را انجام دهید؛ تکه کده زیر عداد 1399را با اعداد فارسی چاپ می کند.
$persianNumberFormatter=new NumberFormatter("fa_IR",NumberFormatter::IGNORE);
echo $persianNumberFormatter->format(1399);
یک از مقادیر جالبی که آرگمان style$ می گیرد، NumberFormatter::SPELLOUT هست. اگر آرگمان دوم را در کد بالا با این عوض کنید.
خروجی عبارت زیر را می گیرید.
کد:
یک هزار و سیصد و نود و نه
دیگه چی از این بهتر؟!
با اینکه extension=intl extension در uncomment php.ini هست ولی بازم خطا میده کلاس IntlDateFormatter پیدا نشد.
ومپ سرور php 7.3
(27-10-1399، 02:47 ب.ظ)artablog نوشته: [ -> ]با اینکه   extension=intl  extension  در uncomment  php.ini هست ولی بازم خطا میده کلاس IntlDateFormatter پیدا نشد.
ومپ سرور  php 7.3

سلام بعد از حذف کاما حتما باید وب سرور خودت رو RESTART کنید و از فایل پیوست استفاده کنید. بازم اگر مشکلی بود لطفا کدهای خودتون رو اینجا بزارید تا بررسی کنم.
سلام، کاما از اول نبود. کد هم همین کدی که شما گذاشتین تست کردم خطا داد. دستور get_loaded_extensions اجرا کردم intl در لیست اکستنشن ها نبود.
توی تصویر ضمیمه توضیح دادم:

  1. برنامه‌ی XAMPP Control Panel رو در حالت Administrative Mode اجرا کنین‌ (کلیک راست).
  2. روی دکمه‌ی Config کلیک کنین و php.ini رو انتخاب کنین.
  3. خط ;extension=intl رو پیدا کنین و سمی‌کالن ابتداش رو حذف کنین.
  4. فایل رو ذخیره کنین و ویرایشگر متن رو ببندین.
  5. روی دکمه‌ی Stop سرویس Apache کلیک کنین و بعد روی Start کلیک کنین.
  6. توی phpinfo میتونین چک کنین که افزونه فعال شده.