CatChMeIfUCan
CatChMeIfUCan

Reputation: 569

how to change the color of decimals points in php

how can I change the colors of ONLY decimals of a number in PHP? this is my function for formatting numbers

function formatNumber($input, $decimals = 'auto', $prefix = '', $suffix = '') {

    $input = floatval($input);
    $absInput = abs($input);
    if ($decimals === 'auto') {
        if ($absInput >= 0.01) {
            $decimals = 2;
        } elseif (0.0001 <= $absInput && $absInput < 0.01) {
            $decimals = 4;
        } elseif (0.000001 <= $absInput && $absInput < 0.0001) {
            $decimals = 6;
        } elseif ($absInput < 0.000001) {
            $decimals = 8;
        }
    }

 if($input>1000000000000000){
        $result = ROUND(($input/1000000000000000),2).' TH ';
    }elseif($input>1000000000000){
        $result = ROUND(($input/1000000000000),2).'  T ';
    }elseif($input>1000000000){
        $result = ROUND(($input/1000000000),2).'  B ';
    }elseif($input>1000000) {
        $result = ROUND(($input / 1000000), 2) . '  M ';
    } else {
        $result  = number_format($input, $decimals, config('decimal-separator','.'), config('thousand-separator', ',')) ;
    }
    return ($prefix ? $prefix : '') . $result. ($suffix ? $suffix : '');

}

and I use it like that

<?php echo formatNumber($chart['assist'], 2)?>

i want my decimals with a different color... can i use css there or add classes?

Upvotes: 2

Views: 469

Answers (3)

Banzay
Banzay

Reputation: 9470

Here is shorter solution

$n = 123.456;
$nums = explode(".",$n);
echo $nums[0] . '<span class="colorme">.' . $nums[1] . '</span>';

Upvotes: 0

Anthony
Anthony

Reputation: 37065

So with your existing code, you could do something like:

 $dec_point = config('decimal-separator','.');
 $wrapped_dec_point = "<span class='dec_point'>{$dec_point}</span>";
 $result  = number_format($input, $decimals, $wrapped_dec_point, config('thousand-separator', ',')) ;

and then of course, for your CSS, you would just need

.dec_point {
     color: magenta;
 }

Upvotes: 0

ficuscr
ficuscr

Reputation: 7063

Here is an example of what I meant in my comment by manipulate the string:

<?php
$n = 123.456;

$whole = floor($n);      //  123
$fraction = $n - $whole; // .456

//echo str_replace('.', '<span class="colorme">.</span>', $n);
echo $whole . '<span class="colorme">.</span>' . substr($fraction, strpos($fraction, '.')+1);

//Simply do a string replace on the decimal point.

UPDATED break out parts, concatenate.

A client side approach with Javascript (with some jQuery) would be something like:

$('#myDiv').each(function () {
  $(this).html($(this).html().replace(/\./g, '<span class="colorme">.</span>'));

  //or decimal point and decimal number part...
  $(this).html($(this).html().replace(/\.([0-9]+)/g, '<span class="colorme">.$1</span>'));
});

Remember that other locales don't always use . for divider.

Upvotes: 3

Related Questions