PDA

View Full Version : سوال: چطور اعداد را به صورت فارسی نمایش بدم ؟



mdssoft
جمعه 04 مرداد 1387, 21:42 عصر
با سلام .
بچه ها اینجا رو ببینید . http://alavi.us/jcal/p.php
اعداد تقویم به صورت فارسی نمایش داده شده اند ، چطور اینکار رو بکنم ؟

sama01
شنبه 05 مرداد 1387, 00:46 صبح
اگر برنامه Character Map موجود در ویندوز را اجرا کنید، خواهید دید که غیر از اعداد انگلیسی، در اکثر فونت‌ها، اعداد فارسی هم وجود دارند. فقط کافی است در متن مورد نظرتان، هر عدد را با عدد فارسی replace کنید.

mdssoft
شنبه 05 مرداد 1387, 02:00 صبح
ممنون. اما مشکلم اینه که همینی که گفتین رو بلد نیستم !

angel_boy013
شنبه 05 مرداد 1387, 16:58 عصر
از این روش هم میتونی استفاده کنی:


function farsi_number($m)
{
$m=str_replace("1","۱",$m);
$m=str_replace("2","۲",$m);
$m=str_replace("3","۳",$m);
$m=str_replace("4","۴",$m);
$m=str_replace("5","۵",$m);
$m=str_replace("6","۶",$m);
$m=str_replace("7","۷",$m);
$m=str_replace("8","۸",$m);
$m=str_replace("9","۹",$m);
$m=str_replace("0","۰",$m);
return $m;
}

vahid4134
شنبه 05 مرداد 1387, 21:53 عصر
از این روش هم میتونی استفاده کنی:


function farsi_number($m)
{
$m=str_replace("1","۱",$m);
$m=str_replace("2","۲",$m);
$m=str_replace("3","۳",$m);
$m=str_replace("4","۴",$m);
$m=str_replace("5","۵",$m);
$m=str_replace("6","۶",$m);
$m=str_replace("7","۷",$m);
$m=str_replace("8","۸",$m);
$m=str_replace("9","۹",$m);
$m=str_replace("0","۰",$m);
return $m;
}


بهینه شدش میشه (البته با اجازه شما)


function farsi_number($m)
{
$en=array("0","1","2","3","4","5","6","7","8","9");
$fa=array("۰","۱","۲","۳","۴","۵","۶","۷","۸","۹");
return str_replace($en,$fa,$M)
}

mdssoft
یک شنبه 06 مرداد 1387, 01:23 صبح
خیلی ممنون .
این کاراکتر های فارسی رو هم میشه تو Mysql ذخیره کرد ، مشکلی پیش نمیاد ؟

vahid4134
یک شنبه 06 مرداد 1387, 11:52 صبح
خیلی ممنون .
این کاراکتر های فارسی رو هم میشه تو Mysql ذخیره کرد ، مشکلی پیش نمیاد ؟

خیر مشکلی پیش نمیاد. فقط charset و collation رو باید درست تنظیم کنید تا به مشکلی بر نخورید

mdssoft
یک شنبه 06 مرداد 1387, 15:57 عصر
ممنون از پاسختون.

خیر مشکلی پیش نمیاد. فقط charset و collation رو باید درست تنظیم کنید تا به مشکلی بر نخورید
منظورتون اینه :


mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
mysql_query("SET character_set_client = utf8 ");
mysql_query("SET character_set_results = NULL ") ;
mysql_query("SET character_set_connection = utf8 ");

vahid4134
یک شنبه 06 مرداد 1387, 19:33 عصر
ممنون از پاسختون.

منظورتون اینه :


mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
mysql_query("SET character_set_client = utf8 ");
mysql_query("SET character_set_results = NULL ") ;
mysql_query("SET character_set_connection = utf8 ");

درسته و همچنین charset هایی که برای فیلدها و table قرار می دهید

mdssoft
دوشنبه 07 مرداد 1387, 00:56 صبح
خیلی خیلی ممنون

hossein taghi zadeh
دوشنبه 07 مرداد 1387, 14:39 عصر
با سلام

بهتره از اين تابع استفاده كنيد. البته Charset صفحتون UTF8 باشه.


function farsinum($str){
$out = "";
for ($i = 0; $i < strlen($str); ++$i) {
$c = substr($str, $i, 1);
$out .= pack("C*", 0xDB, 0xB0 + $c);
}
return $out;
}

function NumToPersian($str){
$result = $str;
$alphabet = array();
$srch = array('&#', '&amp;#');

foreach ($srch as $value) {
$pos = strpos($result, $value);
while ($pos !== false) {
$alphabet[] = substr($result, $pos, strlen($value)+5);
$result = substr($result, 0, $pos).str_repeat('|', strlen($value)+5).substr($result, $pos+strlen($value)+5);
$pos = strpos($result, $value);
}
}

for($i = 0; $i <= 9; $i++){
$result = str_replace($i, $this->farsinum($i), $result);
}

foreach ($alphabet as $val) {
$pos = strpos($result, str_repeat('|', strlen($val)));
$result = substr($result, 0, $pos).$val.substr($result, $pos+strlen($val));
}

return $result;
}

vahid4134
دوشنبه 07 مرداد 1387, 15:46 عصر
با سلام

بهتره از اين تابع استفاده كنيد. البته Charset صفحتون UTF8 باشه.


function farsinum($str){
$out = "";
for ($i = 0; $i < strlen($str); ++$i) {
$c = substr($str, $i, 1);
$out .= pack("C*", 0xDB, 0xB0 + $c);
}
return $out;
}

function NumToPersian($str){
$result = $str;
$alphabet = array();
$srch = array('&#', '&amp;#');

foreach ($srch as $value) {
$pos = strpos($result, $value);
while ($pos !== false) {
$alphabet[] = substr($result, $pos, strlen($value)+5);
$result = substr($result, 0, $pos).str_repeat('|', strlen($value)+5).substr($result, $pos+strlen($value)+5);
$pos = strpos($result, $value);
}
}

for($i = 0; $i <= 9; $i++){
$result = str_replace($i, $this->farsinum($i), $result);
}

foreach ($alphabet as $val) {
$pos = strpos($result, str_repeat('|', strlen($val)));
$result = substr($result, 0, $pos).$val.substr($result, $pos+strlen($val));
}

return $result;
}


میشه بگید مزیت این کد چی هست؟ (به نظر من که اصلا کد مناسبی نیست)