تبدیل اعداد فارسی به انگلیسی در php 5/5 (3)

3
2471
php

یکی از چالش‌های پرتکرار در برنامه نویسی، کار کردن با اعداد فارسی است. این اعداد در استاندارد Unicode یا UTF8 مکانی متفاوت با اعداد انگلیسی دارند و از طرفی می‌دانیم که محاسبات با اعداد انگلیسی انجام می‌شود. این محدودیت‌ها باعث می‌شود تا ما قادر نباشیم در برخی از مواقع مانند نمایش قیمت محصولات یا هر عدد دیگری، از اعداد فارسی استفاده کنیم. برای رفع این محدودیت راه‌های زیادی وجود دارد. مثلا اینکه از یک فونت فارسی استفاده کنیم که به جای کاراکترهای عددی انگلیسی، کاراکترهای فارسی جایگزین کرده باشد. و یا اینکه یک مبدل بسازیم تا هر کجا که نیاز است، این اعداد به هم تبدیل شوند. امکان ساخت این مبدل هم در سمت کلاینت(مانند جاوا اسکریپت) و هم در سمت سرور(زبان‌های سمت سرور مانند PHP) وجود دارد.

دقت کنید که راه حل استفاده از فونت با اعداد تماما فارسی، مشکل جدیدی را بوجود خواهد آورد. دیگر امکان نشان دادن حروف انگلیسی را نخواهیم داشت. تصور کنید کاربر در بخشی از سایت میخواهد آدرس ایمیل خود را وارد کند که حاوی عدد است. آن وقت با متنی روبرو می‌شود که باید تماما انگلیسی باشد اما حاوی اعداد فارسی است.

روش مناسب‌تر که پیش‌تر نیز عنوان شد، تبدیل اعداد فارسی به انگلیسی و بالعکس است. البته این روش هم چندان بی دردسر نیست و ممکن است اندکی در کدنویسی ما تاثیر بگذارد ولی مزیت این راه حل این است که دیگر با محدودیت جدیدی روبرو نخواهیم شد. در ادامه نحوه پیاده‌سازی این تبدیل کننده را فرا خواهیم گرفت.


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

ایده‌ی تبدیل اعداد فارسی به انگلیسی در PHP می‌تواند به سادگی تصویر زیر باشد. در این تصویر اعداد فارسی و انگلیسی بصورت نظیر به نظیر در مقابل هم قرار گرفته‌اند. کاری که ما باید انجام دهیم این است که هر گاه در متن به یکی از اعداد فارسی رسیدیم، آن را با معادل انگلیسی که در مقابلش قرار دارد، تعویض کنیم.

persian english numbers

به نمونه کد زیر نگاه کنید. این نمونه کد با استفاده از تابع str_replace یک مجموعه کاراکتر(اعداد فارسی) را با مجموعه دیگر(اعداد انگلیسی) در متن $string به صورت نظیر به نظیر، جایگزین می‌کند.


function convertPersianToEnglish($string) {
$persian = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
$english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];

$output= str_replace($persian, $english, $string);
return $output;
}


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

برای تبدیل اعداد انگلیسی به فارسی نیز تنها کافیست در نمونه کد قبلی و در دستور str_replace، جای متغیر $persian و $english را عوض کنید. نمونه کد زیر این کار را انجام داده است .


function convertEnglishToPersian($string) {
$persian = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
$english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];

$output= str_replace($english, $persian, $string);
return $output;
}


کاربردهای دیگر

  • از همین ایده می‌توان برای استاندارد سازی کاراکترهای فارسی استفاده کرد. حروفی مانند ی، ک و مانند این‌ها در زبان فارسی و عربی، کاراکترهای متفاوتی دارند. برای استاندارد سازی متن فارسی حاوی کاراکترهای عربی، کافیست در یکی از آرایه‌ها کاراکترهای عربی و در آرایه دیگر کاراکترهای معادل فارسی را بصورت نظیر به نظیر قرار دهید.
  • به غیر از استاندارد سازی حروف، از این روش می‌توان برای سانسور برخی کلمات ناشایست در متن نیز استفاده کرد. کافیست به جای کلمات نامناسب، از **** استفاده کنیم.

برای مشاهده سایر مطالب آموزشی در مورد زبان برنامه نویسی PHP به دسته آموزش‌های PHP مراجعه کنید.

موفق و پیروز باشید…

به این مطلب امتیاز بدهید

3 دیدگاه‌ها

ارسال یک پاسخ

لطفا دیدگاه خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید