thomas91
Goto Top

Php regex und Array

Hallo zusammen,

ich benötige dringen hilfe mit php, regex und einem Array.

Ich habe eine Textdatei in der eine passage mit folgendem Beispiel wäre:

Koord. WGS E : 10.7093582209 
Koord. WGS N : 49.4588699688 

Diese werden mit der Regex ausgewertet:
/Koord[\.\s]+WGS\s+(?P<direction>[NE])[\s:]+(?P<coordinate>[0-9\.]+)

Nun möchte ich die Beiden treffen in der reihenfolge N E einer variablen hinzufügen $koordinaten damit ich diese in eine DB importieren kann. Leider sind bei mir immer leere Werte vorhanden =(

Gruß Thomas

Content-ID: 322389

Url: https://administrator.de/contentid/322389

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

Sheogorath
Sheogorath 29.11.2016 um 20:05:34 Uhr
Goto Top
Moin,

wie wäre es damit:

/^Koord\.\s+WGS\s+([NE])\s+:\s+(\d+(\.\d+)?)/


Dann hast du in Matchgroup 1 dein Buchstabe und in Matchgroup 2 deine Dezimalzahl

Gruß
Chris
Thomas91
Thomas91 29.11.2016 um 20:15:44 Uhr
Goto Top
Hey,
danke für deine Antwort. mit deinem Vorschlag funktioniert das ganze leider nicht.

// Koordinaten
    if (preg_match("Koord[\.\s]+WGS\s+(?P<direction>[NE])[\s:]+(?P<coordinate>[0-9\.]+)", $alarmfax, $treffer)) {  
        $koordinaten = trim($treffer[2]) . " " . trim($treffer[1]);  
    }

Ich benötige die Umsetzung der zwei dezimalzahlen in die Variable $koordinaten. kannst du mir helfen?

Gruß
Sheogorath
Sheogorath 29.11.2016 um 20:29:29 Uhr
Goto Top
Moin,

klar:

if (preg_match("^Koord\.\s+WGS\s+([NWES])\s+:\s+(\d+(?:\.\d+)?)\nKoord\.\s+WGS\s+([NWES])\s+:\s+(\d+(?:\.\d+)?)", $alarmfax, $treffer)) {  
            $koordinaten = trim($treffer[2]) . " " . trim($treffer[1] . ", " . $treffer[4] . " " . $treffer[3]);   
}

Jetzt musst du nur noch dafür sorge tragen, dass deine Koordinaten in der Richtigen reihenfolge sind. Dafür kannst du entweder oben in dem mehrzeiligen Regex bei einem eintrag die gegenkoordinaten entfernen oder vor der Verarbeitung die Reihenfolge mit einem if prüfen

Gruß
Chris
Thomas91
Thomas91 29.11.2016 aktualisiert um 20:49:42 Uhr
Goto Top
Wie meinst du das mit der Reihenfolge?
Edit: der Code von dir greift bei mir nicht die Koordinaten face-sad
Sheogorath
Sheogorath 29.11.2016 um 21:24:16 Uhr
Goto Top
Moin,

mit Reihenfolge meine ich ob längen oder breitengrad in der Eingabe zuerst kommen

Und warum der code nicht greift, kann daran liegen, dass dein Input nicht zum Regex passt, der davon ausgeht, dass du ein Textdokument mit dem Input hast, wo dieser nicht als erstes Zeichen steht? bzw. Zeile für Zeile eingekippt wird? Dann ergeben sich da natürlich Probleme

Gruß
Chris