user318466 user318466 - 1 month ago 9
PHP Question

How to prefix a positive number with plus sign in PHP

I need to design a function to return negative numbers unchanged but should add a

+
sign at the start of the number if its already no present.

Example:

Input Output
----------------
+1 +1
1 +1
-1 -1


It will get only numeric input.

function formatNum($num)
{
# something here..perhaps a regex?
}


This function is going to be called several times in
echo/print
so the quicker the better.

Update:

Thank you all for the answers. I must tell the
sprintf
based solution is really fast.

Answer Source

You can use regex as:

function formatNum($num){
    return preg_replace('/^(\d+)$/',"+$1",$num);
}

But I would suggest not using regex for such a trivial thing. Its better to make use of sprintf here as:

function formatNum($num){
    return sprintf("%+d",$num);
}

From PHP Manual for sprintf:

An optional sign specifier that forces a sign (- or +) to be used on a number. By default, only the - sign is used on a number if it's negative. This specifier forces positive numbers to have the + sign attached as well, and was added in PHP 4.3.0.