You can use str_pad
echo str_pad(12, 12, "0", STR_PAD_LEFT);
You can also use printf or sprintf
printf("%012s", 12);
Output
000000000012
Some Work Arounds
var_dump(formatOutput("12"));
var_dump(formatOutput("123.50"));
var_dump(formatOutput("123.378201"));
function formatOutput($no,$max = 15) {
$no = str_pad("1", strlen(substr(strrchr($no, "."), 1)), "0", STR_PAD_RIGHT) * $no;
if(strpos($no, "."))
$no = str_replace(".", "", $no) . "0" ;
return str_pad($no, $max, "0", STR_PAD_LEFT);
}
Output
string '000000000000012' (length=15)
string '000000000001235' (length=15)
string '000001233782010' (length=15)