Hallo,
Beispiele:
9°55'55.71"O
9°55'55.71" ö.L.
9°55.95'EAlso hast du grundlegend erst Mal folgende Bestandteile:
- Zahl gefolgt von Gradzeichen
- Zahl gefolgt von Minutenzeichen
- Zahl gefolgt von Sekundenzeichen
- Buchstaben, die noch den Quadranten angeben
und ihr habt das Vorzeichen vergessen.
Ueberlege dir, welche dieser Bestandteile ggf. optional vorhanden sein koennten - der erste und der letzte vermutlich nicht
Warum nicht?
Bei Koordinaten, die innerhalb von ±1° um den Nullmeridian bzw. den Äquator liegen, könnte die Angabe auch mit der Anzahl der Bogenminuten beginnen.
Und die Buchstaben hintendran können ebenfalls fehlen, da man östliche Längen bzw. südliche Breiten ja auch gern einfach als negative Winkel notiert.
Dann ueberleg dir noch, ob und wo dazwischen du ggf. noch optionalen Whitespace akzeptieren willst.
Ich bin eher der Meinung, dass man hier mit Regex nicht zum Ziel kommt, sondern den gesamten String Stück für Stück analytisch parsen muss:
* Führendes Vorzeichen (falls vorhanden)
* Bis zu dreimal einen Block aus Ziffern und optional einem Dezimalpunkt
isolieren und als float parsen, dann anhand des nachfolgenden Zeichens
die Wertigkeit feststellen
* abschließende Ost/West- bzw. Nord/Süd-Info auswerten
Ich hab sowas vor Jahren mal in C geschrieben, dürfte aber in PHP auch nicht schwieriger sein.
So long,
Martin
Die Zeit, die man zur Fertigstellung eines Projekts wirklich braucht, ist immer mindestens doppelt so lang wie geplant.
Wurde dieser Umstand bei der Planung bereits berücksichtigt, gilt das Prinzip der Rekursion.