idocsidocs
چهارشنبه 15 شهریور 1391, 17:26 عصر
منظورم اینه که عدد 1234567890 به 1،234،567،890 تبدیل بشه.
Reza1607
چهارشنبه 15 شهریور 1391, 18:38 عصر
تابع number_format
faravaghi
چهارشنبه 15 شهریور 1391, 18:57 عصر
سلام،
البته همون تابعی که دوستمون معرفی کردن درسته ولی یه جاهایی کارایی نداره مثل سرورهای ویندوزی!
این تابع میتونه کمک کنه، منم ازش استفاده کردم جواب داد.
public function money_format($format, $number)
{
$regex = '/%((?:[\^!\-]|\+|\(|\=.)*)([0-9]+)?'.
'(?:#([0-9]+))?(?:\.([0-9]+))?([in%])/';
if (setlocale(LC_MONETARY, 0) == 'C') {
setlocale(LC_MONETARY, '');
}
$locale = localeconv();
preg_match_all($regex, $format, $matches, PREG_SET_ORDER);
foreach ($matches as $fmatch) {
$value = floatval($number);
$flags = array(
'fillchar' => preg_match('/\=(.)/', $fmatch[1], $match) ?
$match[1] : ' ',
'nogroup' => preg_match('/\^/', $fmatch[1]) > 0,
'usesignal' => preg_match('/\+|\(/', $fmatch[1], $match) ?
$match[0] : '+',
'nosimbol' => preg_match('/\!/', $fmatch[1]) > 0,
'isleft' => preg_match('/\-/', $fmatch[1]) > 0
);
$width = trim($fmatch[2]) ? (int)$fmatch[2] : 0;
$left = trim($fmatch[3]) ? (int)$fmatch[3] : 0;
$right = trim($fmatch[4]) ? (int)$fmatch[4] : 0;//$locale['int_frac_digits'];
$conversion = $fmatch[5];
$positive = true;
if ($value < 0) {
$positive = false;
$value *= -1;
}
$letter = $positive ? 'p' : 'n';
$prefix = $suffix = $cprefix = $csuffix = $signal = '';
$signal = $positive ? $locale['positive_sign'] : $locale['negative_sign'];
switch (true) {
case $locale["{$letter}_sign_posn"] == 1 && $flags['usesignal'] == '+':
$prefix = $signal;
break;
case $locale["{$letter}_sign_posn"] == 2 && $flags['usesignal'] == '+':
$suffix = $signal;
break;
case $locale["{$letter}_sign_posn"] == 3 && $flags['usesignal'] == '+':
$cprefix = $signal;
break;
case $locale["{$letter}_sign_posn"] == 4 && $flags['usesignal'] == '+':
$csuffix = $signal;
break;
case $flags['usesignal'] == '(':
case $locale["{$letter}_sign_posn"] == 0:
$prefix = '(';
$suffix = ')';
break;
}
if (!$flags['nosimbol']) {
$currency = $cprefix .
($conversion == 'i' ? $locale['int_curr_symbol'] : $locale['currency_symbol']) .
$csuffix;
} else {
$currency = '';
}
$space = $locale["{$letter}_sep_by_space"] ? ' ' : '';
$value = number_format($value, $right, $locale['mon_decimal_point'],
$flags['nogroup'] ? '' : $locale['mon_thousands_sep']);
$value = @explode($locale['mon_decimal_point'], $value);
$n = strlen($prefix) + strlen($currency) + strlen($value[0]);
if ($left > 0 && $left > $n) {
$value[0] = str_repeat($flags['fillchar'], $left - $n) . $value[0];
}
$value = implode($locale['mon_decimal_point'], $value);
if ($locale["{$letter}_cs_precedes"]) {
$value = $prefix . $currency . $space . $value . $suffix;
} else {
$value = $prefix . $value . $space . $currency . $suffix;
}
if ($width > 0) {
$value = str_pad($value, $width, $flags['fillchar'], $flags['isleft'] ?
STR_PAD_RIGHT : STR_PAD_LEFT);
}
$format = str_replace($fmatch[0], $value, $format);
}
return $format;
}
اینم طرز استفاده از تابع:
money_format('%!i', $monyfield)
idocsidocs
چهارشنبه 15 شهریور 1391, 19:11 عصر
تابع number_format
یاد قدیما که پی اچ پی یاد می گرفتم بخیر ! اصلا این تابع یادم رفته بود !
رضا قربانی
چهارشنبه 15 شهریور 1391, 22:09 عصر
یاد قدیما که پی اچ پی یاد می گرفتم بخیر ! اصلا این تابع یادم رفته بود !
و برنامه نویس ها دکمه تشکر رو آفریدند.
idocsidocs
چهارشنبه 15 شهریور 1391, 22:38 عصر
و برنامه نویس ها دکمه تشکر رو آفریدند. شما نمی یای نمی یای، وقتی هم می یای یه تیکه می ندازی . . .
می خوای منم یه تیکه بندازم و ببینیم کی ماهر تره؟
در ضمن تعداد تشکرهایی که کردم هم کم نبوده ها ! دو برابر شما تشکر کردم ولی هنوز کسی رو اینطوری نصیحت نکردم !
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.