PDA

View Full Version : ()str_replace



.Taher
یک شنبه 05 مهر 1383, 20: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, 22:36 عصر
تا جایی که دیدم در صورتیکه متن کنارش فارسی یا عربی باشه (rtl) مشکل حل میشه


<span dir="rtl">سلام1</span>

.Taher
یک شنبه 05 مهر 1383, 22:52 عصر
نه حل نمیشه...
البته به تنظیمات ویندوز هم مربوط میشه...

این str_replace اینجا دقیقا چه کاری انجام میده ؟ چون به فرض با ورودی 9 جواب صحیح میده ولی با ورودی 7 خیر...

:flower:

houtanal
یک شنبه 05 مهر 1383, 23:11 عصر
من الان دارم از همین روش استفاده می کنم و مشکلی ندارم :shock:

این برای توضیح تابع str_replace
http://www.php.net/manual/en/function.str-replace.php

.Taher
دوشنبه 06 مهر 1383, 08:37 صبح
شما اعداد تاریخ بالای ارسالتون رو فارسی میبینید؟ اون هم راست به چپه دیگه...

ممنون اون قسمت ‏‏manual رو چند بار خوندم ولی چیزی دستگیرم نشده...

houtanal
دوشنبه 06 مهر 1383, 21:00 عصر
شما اعداد تاریخ بالای ارسالتون رو فارسی میبینید؟
بله
سیستم عامل:ویندوز XP


ممنون اون قسمت ‏‏manual رو چند بار خوندم ولی چیزی دستگیرم نشده...
آرگومان اول چیزیه که الان هست و می خوای در یک جمله دنبالش بگردی و عوضش کنی
آرگومان دوم: چیزی که باید جایگزین آرگومان اول بشه
آرگومان سوم: رشته ای که باید برای آرگومان اول جستجو بشه تا آرگومان دوم جایگزین شود.

.Taher
دوشنبه 06 مهر 1383, 23: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
دوشنبه 06 مهر 1383, 23:08 عصر
من در یک td این مشکل را داشتم dir=rtl رو بهش اضافه کردم و مشکل حل شد.اول این رو امتحان کن.

oxygenws
دوشنبه 06 مهر 1383, 23:39 عصر
با مرورگر های دیگه مثل موزیلا هم تست کنید.

.Taher
سه شنبه 07 مهر 1383, 12:03 عصر
از فایرفاکس استفاده میکنم...

جدا شما همه این اعداد رو فارسی میبینید؟
عضو شده در: 27 دی 1382
پست: 1216

oxygenws
سه شنبه 07 مهر 1383, 12:46 عصر
نه، من هم انگلیسی می بینم ولی فکر کنم شما این عدد ۱۲۳۴۵ رو فارسی ببینید، نه؟؟

Spoofed
سه شنبه 07 مهر 1383, 12:51 عصر
اینجا رو ببین : (برای مشاهده تفاوت بین محل قرارگیری اعداد فارسی و انگلیسی)

http://www.iranasp.net/Articles/ShowArticle.aspx?articleid=68

.Taher
سه شنبه 07 مهر 1383, 15:43 عصر
نه، من هم انگلیسی می بینم ولی فکر کنم شما این عدد ۱۲۳۴۵ رو فارسی ببینید، نه؟؟

بله، فارسی می بینم...
خوب چطور میشه 2 رو با ;1778 &# جایگزین کرد؟



اینجا رو ببین : (برای مشاهده تفاوت بین محل قرارگیری اعداد فارسی و انگلیسی)

http://www.iranasp.net/Articles/ShowArticle.aspx?articleid=68



ممنونم... ولی این برنامه شون رو من اجرا کردم (در وی بی) فقط ؟؟ چاپ میکرد... این تابع عدد انگلیسی رو با 1728 جمع میکنه و مقدارش رو نشون میده... تو php این توابع چی هستن؟ ord- chr ؟؟

oxygenws
سه شنبه 07 مهر 1383, 16:11 عصر
این صفحه رو ببین:
http://www.php.net/manual/en/ref.strings.php

تابع ord و chr رو پیدا کن :)

موفق باشی

.Taher
پنج شنبه 09 مهر 1383, 17:00 عصر
ممنونم...
فعلا اینطوری حلش کردم!! :mrgreen:


$farsi_number = '&#'.(1776 + $eng_number).';';


تا ببینم با ابن توابع چه میشه کرد... :)
موفق باشی... :flower: