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

0
1
php

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

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

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

[divider]

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

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

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;
}

[divider]

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

برای این تبدیل تنها کافیست در نمونه کد قبلی و در دستور 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;
}

[divider]

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

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

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

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

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

ارسال یک پاسخ

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