°
- это два байта 0xC2 0xB0
, и вы не находитесь в "режиме" Unicode. Поэтому он разделяется на 0xC2
и снова на 0xB0
с пустым элементом в середине.
Включить режим Unicode с модификатором u
.
$long = "13°47'52.544\"E";
$res = preg_split("/[°'\"]/u", $long);