sabloger
دوشنبه 02 بهمن 1391, 00:53 صبح
با سلام خدمت دوستان و اساتید محترم
من برای کارهام نیاز داشتم که اعداد انگلیسی رو به فارسی تبدیل کنم، یعنی کلا به اعداد فارسی نیاز داشتم
برای همین یه سری جست و جو کردم
که به تابع های پیچیده و طولانی رسیدم
از جمله اونا تابعی بود که توی jdate بود
که بسیار طولانی و کند بود
برای همین خودم دست به کار شدم تا یه تابع خو بنویسم
حالا اونو با توضیح برای شما دوستان میگذارم
/** SABloger -- Function for convert EN nums to FA Nums **/
function SAENnum2FAnum($numstr)
{
$ConvertedStr = '';
for( $n = 0 ; $n <= strlen($numstr) ; $n++)
{
$ns = substr($numstr , $n , 1);
if(is_numeric($ns))
$ConvertedStr .= '' . (28 + 48 + $ns);
}
return $ConvertedStr;
}
$numstr یک پارامتر رشته ایه که میتونه حاوی اعداد و حروف مختلط باشه
یعنی یه چیزی مثل این:
12as34xd5vvf67h89w0
که این تابع اعداد داخل متن رو میکشه بیرون و برای همچین رشته ای، این خروجی رو میده :
۱۲۳۴۵۶۷۸۹۰
if(is_numeric($ns))
میاد میبینه اگر کاراکتر جاری عدد بود، اجازه میده که فرایند تبدیل انجام بشه
$ConvertedStr .= '' . (28 + 48 + $ns);
کد اعداد فارسی در html از 1776 شروع شده و به 1785 ختم میشن! یعنی 0 تا 9!
و اعداد لاتین از 48 تا 57 طبق قانون اسکی
پس من عدد جاری رو به 48 که عدد 0 لاتین میشه اضافه کردم
سپس به 28 که اختلاف 76 و 48 هست اضافه کردم تا یه عددی بین 76 تا 85 مبنی بر عدد جاری ساخته بشه
در نهایت اونو کنار  گذاشتم تا کد عدد فارسی کامل بشه و به متن خروجی چسبوندم
امیدوارم که به کارتون بیاد
اساتید هم اگر اشکالی در کد دیدند خوشحال میشم راهنماییم کنند
با آرزوی موفقیت روز افزون برنامه نویسان ایران زمین
من برای کارهام نیاز داشتم که اعداد انگلیسی رو به فارسی تبدیل کنم، یعنی کلا به اعداد فارسی نیاز داشتم
برای همین یه سری جست و جو کردم
که به تابع های پیچیده و طولانی رسیدم
از جمله اونا تابعی بود که توی jdate بود
که بسیار طولانی و کند بود
برای همین خودم دست به کار شدم تا یه تابع خو بنویسم
حالا اونو با توضیح برای شما دوستان میگذارم
/** SABloger -- Function for convert EN nums to FA Nums **/
function SAENnum2FAnum($numstr)
{
$ConvertedStr = '';
for( $n = 0 ; $n <= strlen($numstr) ; $n++)
{
$ns = substr($numstr , $n , 1);
if(is_numeric($ns))
$ConvertedStr .= '' . (28 + 48 + $ns);
}
return $ConvertedStr;
}
$numstr یک پارامتر رشته ایه که میتونه حاوی اعداد و حروف مختلط باشه
یعنی یه چیزی مثل این:
12as34xd5vvf67h89w0
که این تابع اعداد داخل متن رو میکشه بیرون و برای همچین رشته ای، این خروجی رو میده :
۱۲۳۴۵۶۷۸۹۰
if(is_numeric($ns))
میاد میبینه اگر کاراکتر جاری عدد بود، اجازه میده که فرایند تبدیل انجام بشه
$ConvertedStr .= '' . (28 + 48 + $ns);
کد اعداد فارسی در html از 1776 شروع شده و به 1785 ختم میشن! یعنی 0 تا 9!
و اعداد لاتین از 48 تا 57 طبق قانون اسکی
پس من عدد جاری رو به 48 که عدد 0 لاتین میشه اضافه کردم
سپس به 28 که اختلاف 76 و 48 هست اضافه کردم تا یه عددی بین 76 تا 85 مبنی بر عدد جاری ساخته بشه
در نهایت اونو کنار  گذاشتم تا کد عدد فارسی کامل بشه و به متن خروجی چسبوندم
امیدوارم که به کارتون بیاد
اساتید هم اگر اشکالی در کد دیدند خوشحال میشم راهنماییم کنند
با آرزوی موفقیت روز افزون برنامه نویسان ایران زمین