I’m in a situation where the CSV file is getting rid of the leading zero before my import and I need to be able to account for that. Let’s say that I have my value as the following:
-.0982739
-> I would want all case scenarios where it’s -.
to turn into -0.
– Here are my attempts:
if (str_contains($this->longitude, '-.')) { $this->longitude = '0' . $this->longitude; }; Outputs: 00-.0989070 if ($this->longitude[0] == '.') { $this->longitude = '0' . $this->longitude; } Outputs: -.0989070
To simplify things, basically any .
that has nothing before it, add in a 0
, otherwise use the value given.
I will need it for both longitude and latitude.
Advertisement
Answer
/^([-+])?./
The above regex matches the signs -
and +
if they are present and immediately followed by a .
. Now, capture the matched group 1 in the regex which is ([-+])?
and append 0.
followed by all digits after .
by taking substr
of the current string.
<?php $a = ".0982739"; if(preg_match('/^([-+])?./',$a, $matches) === 1){ $prefix = $matches[1] ?? ''; $a = $prefix . '0.' . substr($a,$prefix == '' ? 1 : 2); } echo $a;