2010-12-16 16 views
1

Ich muss von einer vollständigen Adresse die letzten Wörter erhalten, die es enthält, nach der Postleitzahl (die immer in der gleichen Reihenfolge sein sollte).PHP PCRE - bekommen Stadt von Adresse

Ein Beispiel für eine Adresse:

Av. Elias Garcia (em frente ao Restaurante Pote) Palhais 2815-233 Charneca da Caparica 

Ich brauche diesen Teil zu bekommen:

Charneca da Caparica 

Wich, wie man sehen kann, sind die letzten Worte nach der Postleitzahl ist:

2815-233 

Ich brauche einen PCRE-Ausdruck, um dies zu erreichen. Irgendwelche Vorschläge?

+1

Ist die Postleitzahl immer in "4 Ziffern - 3 Ziffern", nur Zahlenformat? – deceze

+0

Affirmative @ deceze. Nun, da Sie gefragt haben, ist dieses Format für Portugal. Hoffe es hilft jedem in der Zukunft. – yoda

Antwort

3

So etwas sollte in der Lage sein, es zu tun.

preg_match('/\d{4}-\d{3}\s+(.*)/', $subject, $match); 
echo $match[1]; 

PS: Ich würde nicht versuchen, diese mit reg exp zu analysieren, weil es nicht effizient sein, was passiert, wenn der Benutzer die Stadt vor der Postleitzahl setzen. Wenn Sie Ihre Daten zu 100% sicher haben, sollte es in Ordnung sein.

+0

@RageZ, gutes Update. Dein ursprünglicher Ausdruck war rückwärts. +1 auf der PS. Dies ist eine sehr spezifische Regex. –

+0

Verdammt, ich war nah dran. Ich habe keine Kontrolle über die Benutzereingabe, dies ist für einen Web-Crawler, aber ich vertraue (zu naiv?), Dass die ursprüngliche Anwendung diesen Teil für mich steuert. Übrigens fehlt der letzte Schrägstrich am Ende des Ausdrucks. Prost! – yoda

+0

Ich denke dir ein Wort und Trennzeichen dort. ;) – deceze

2

Dies wird den letzten Teil der Zeichenfolge nach der Postleitzahl (4 Ziffern, Strich, 3 Ziffern) und Leerzeichen erhalten.

preg_match('/\s+\d{4}-\d{3}\s+(.+)$/', $address, $match); 
print_r($match); 
+0

hat auch funktioniert, danke :) – yoda