<?php

function get_coordinates_array($entity_gps) {
	$items = array();
	$res = preg_match_all(
		'/([NSWE])(\\d{1,2})[^\\d](\\d{1,2})[^\\d]([\\d\\.]{1,10})[^\\d\\s]/ui', 
		$entity_gps, $items, PREG_SET_ORDER);
	if ($res === 2) {
		return array(
			"lat" => array_slice($items[0], 1, 4),
		    "lng" => array_slice($items[1], 1, 4)
		);
	} else {
		return null;
	}
}

//testando
$entity_gps = 'N40°11\'43.44" W8°25\'1.31"';
$coordinatesArr = get_coordinates_array($entity_gps);
echo $entity_gps . "\n";
if (is_null($coordinatesArr)) {
	echo 'Entrada inválida!';
} else {
	print_r($coordinatesArr);
}
