Do not think that this is supported, as it may just not be up to some ISO. I think when you add extra space after the sign, semantically it is no longer part of the number (do not quote me on this).
But fix it:
<?php
$n = str_replace(
['-', '+'],
['- ', '+ '],
sprintf("%+0.2f", $number)
);
source
share