View Full Version : ()str_replace
.Taher
یک شنبه 05 مهر 1383, 21:34 عصر
دوستان سلام...
تابعی میخواستم که اعداد انگلیسی رو به فارسی تبدیل کنه...
function farsi_number($adad)
{
$numbers=array(
0 => '۰',
1 => '۱',
2 => '۲',
3 => '۳',
4 => '۴',
5 => '۵',
6 => '۶',
7 => '۷',
8 => '۸',
9 => '۹'
);
$adad = str_replace(array_keys($numbers), array_values($numbers), $adad);
return $adad;
}
(البته اعداد بصورت #1776 و ... هستند)
آیا روش معمول برای اینکار به این صورته؟ (یعنی جایگزینی)
مشکل str_replace من چیه که جواب نادرست میده...
پیشاپیش ممنونم.
houtanal
یک شنبه 05 مهر 1383, 23:36 عصر
تا جایی که دیدم در صورتیکه متن کنارش فارسی یا عربی باشه (rtl) مشکل حل میشه
<span dir="rtl">سلام1</span>
.Taher
یک شنبه 05 مهر 1383, 23:52 عصر
نه حل نمیشه...
البته به تنظیمات ویندوز هم مربوط میشه...
این str_replace اینجا دقیقا چه کاری انجام میده ؟ چون به فرض با ورودی 9 جواب صحیح میده ولی با ورودی 7 خیر...
:flower:
houtanal
دوشنبه 06 مهر 1383, 00:11 صبح
من الان دارم از همین روش استفاده می کنم و مشکلی ندارم :shock:
این برای توضیح تابع str_replace
http://www.php.net/manual/en/function.str-replace.php
.Taher
دوشنبه 06 مهر 1383, 09:37 صبح
شما اعداد تاریخ بالای ارسالتون رو فارسی میبینید؟ اون هم راست به چپه دیگه...
ممنون اون قسمت manual رو چند بار خوندم ولی چیزی دستگیرم نشده...
houtanal
دوشنبه 06 مهر 1383, 22:00 عصر
شما اعداد تاریخ بالای ارسالتون رو فارسی میبینید؟
بله
سیستم عامل:ویندوز XP
ممنون اون قسمت manual رو چند بار خوندم ولی چیزی دستگیرم نشده...
آرگومان اول چیزیه که الان هست و می خوای در یک جمله دنبالش بگردی و عوضش کنی
آرگومان دوم: چیزی که باید جایگزین آرگومان اول بشه
آرگومان سوم: رشته ای که باید برای آرگومان اول جستجو بشه تا آرگومان دوم جایگزین شود.
.Taher
سه شنبه 07 مهر 1383, 00:01 صبح
:o منم xp دارم ولی انگلیسی نمایش داده میشه... گمون کنم به تنظیمات Standars and Formats در Regional and lanquage options مربوط بشه !
منظورم این بود که به اشتباه خودم پی نبردم...
مشکل از محل آرگیومنت ها نیست...
chr(48) => '&# 1776;',
chr(49) => '&# 1777;',
chr(50) => '&# 1778;',
chr(51) => '&# 1779;',
chr(52) => '&# 1780;',
chr(53) => '&# 1781;',
chr(54) => '&# 1782;',
chr(55) => '&# 1783;',
chr(56) => '&# 1784;',
chr(57) => '&# 1785;'
به فرض برای ورودی 7 مقدار &# 17&# 1784;3 را باز میگردونه؟!
مشخصه که بیش از یک بار جایگزینی صورت گرفته...
به هر حال از توجه شما ممنونم :flower:
houtanal
سه شنبه 07 مهر 1383, 00:08 صبح
من در یک td این مشکل را داشتم dir=rtl رو بهش اضافه کردم و مشکل حل شد.اول این رو امتحان کن.
oxygenws
سه شنبه 07 مهر 1383, 00:39 صبح
با مرورگر های دیگه مثل موزیلا هم تست کنید.
.Taher
سه شنبه 07 مهر 1383, 13:03 عصر
از فایرفاکس استفاده میکنم...
جدا شما همه این اعداد رو فارسی میبینید؟
عضو شده در: 27 دی 1382
پست: 1216
oxygenws
سه شنبه 07 مهر 1383, 13:46 عصر
نه، من هم انگلیسی می بینم ولی فکر کنم شما این عدد ۱۲۳۴۵ رو فارسی ببینید، نه؟؟
Spoofed
سه شنبه 07 مهر 1383, 13:51 عصر
اینجا رو ببین : (برای مشاهده تفاوت بین محل قرارگیری اعداد فارسی و انگلیسی)
http://www.iranasp.net/Articles/ShowArticle.aspx?articleid=68
.Taher
سه شنبه 07 مهر 1383, 16:43 عصر
نه، من هم انگلیسی می بینم ولی فکر کنم شما این عدد ۱۲۳۴۵ رو فارسی ببینید، نه؟؟
بله، فارسی می بینم...
خوب چطور میشه 2 رو با ;1778 &# جایگزین کرد؟
اینجا رو ببین : (برای مشاهده تفاوت بین محل قرارگیری اعداد فارسی و انگلیسی)
http://www.iranasp.net/Articles/ShowArticle.aspx?articleid=68
ممنونم... ولی این برنامه شون رو من اجرا کردم (در وی بی) فقط ؟؟ چاپ میکرد... این تابع عدد انگلیسی رو با 1728 جمع میکنه و مقدارش رو نشون میده... تو php این توابع چی هستن؟ ord- chr ؟؟
oxygenws
سه شنبه 07 مهر 1383, 17:11 عصر
این صفحه رو ببین:
http://www.php.net/manual/en/ref.strings.php
تابع ord و chr رو پیدا کن :)
موفق باشی
.Taher
پنج شنبه 09 مهر 1383, 18:00 عصر
ممنونم...
فعلا اینطوری حلش کردم!! :mrgreen:
$farsi_number = '&#'.(1776 + $eng_number).';';
تا ببینم با ابن توابع چه میشه کرد... :)
موفق باشی... :flower:
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.