Regexp für Strassennamen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
alpha
buchstabe
compiler
einstellung
einzelteil
erg
falschen schiene
folgendem ausdruck
friedhof
gut stehen
hausnummer
klappe
meinst
phantasiename
sache
schnelle antwort
sinnen
strass
straenname
umlaut
-
HiHo alle,
m?glicherweise k?nnt ihr mir bei meinem Problem helfen?
Ich suche einen regul?ren Ausdruck (regexp) f?r alle m?glichen Strassennamen in Deutschland.
Ich hatte es zwar schon mit folgendem Ausdruck versucht:
preg_match("/^([a-zA-Z_\-\.]+) (0-9)$/");
Klappt allerdings nicht so wie ich mir das erhofft hatte , denn beispielsweise diese Strassen l?sst der Compiler nicht durchgehen:
Wilhelm-K?lz-Stra?e 10a-20a
Swinem?nder Stra?e 5
Weiherg?rten 25b
Andererseits sollte der Compiler auch nicht Phantasienamen mit Hausnummern, die es nicht gibt akzeptieren.
Hoffe, ihr k?nnt mir helfen
mfg kingalex -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ist dir aufgefallen dass alle diese Stra?en Umlaute wie ?,? im Namen haben? Ich glaub die musst du noch erg?nzen, damit er die Stra?en anerkennt.
Kann aber sein das ich auf einer v?llig falschen Schiene bin.. -
hi mace,
danke f?r deine schnelle Antwort
ich hab das jetzt mal mit diesen Umlauten und ? probiert ->
preg_match("/^([a-zA-Z???????_\-\.]+) (0-9)$/");
Nur leider meckert der Compiler immer noch
keine Ahnung woran das liegen k?nnte -
Simple sache...
Du hast dem kompliler gesagt das nach der hausnummer kein buchstabe mehr kommen darf, deshalb matchts ned auf 23b o.?.
preg_match("#^[a-zA-Z???????\-\.]+[0-9]{1,4}[a-zA-Z]{0,1}$#")
Sollte klappen
Edit:
Na tats naicht, ah vergessen das es auch nummernbereiche sein sollen...
So gehts
preg_match("#^[a-zA-Z??????? \-\.]+[a-zA-Z0-9\-]+$#")
Da kann man sich aber auch unsinnige zahlen ausdenken, also das was du willst geht nicht 100%tig
Beitrag ge?ndert am 8.01.2006 20:15 von theuntouchables -
was meinst du ndenn mit unsinnigen Zahlen?
123, 111, 222, 333, 321, 543, 345?
kann doch sein!
oder meinst du 9999999999999999999999999999999999999999999999999999999999999999999 mit unsinnig?! -
So gehts
preg_match("#^[a-zA-Z??????? \-\.]+[a-zA-Z0-9\-]+$#")
Die Zeichenklasse f?r alle Buchstaben (der jeweiligen "Locale"-Einstellung) hei?t [:alpha:]
also f?r alle Buchstaben:
'/[[:alpha:]]/'
statt
'/[a-zA-Z???????]/'
Wie w?re es mit:
$strasze = '...';
preg_match(
'/(\A[[:alpha:].\-\ ])(\s+)(\d{1,4}[a-z]?)(\-(\d{1,4}[a-z]?))?\Z/'
$strasze,
$rx_matches
);
Geht alles gut, stehen in $rx_matches die Einzelteile:
$rx_matches[1] = Stra?en-Name
$rx_matches[3] = Hausnummer (von)
$rx_matches[5] = Hausnummer (bis, wenn vorhanden)
Hab ich aber noch nicht getestet ... -.-
-
So gehts
preg_match("#^[a-zA-Z??????? \-\.]+[a-zA-Z0-9\-]+$#")
Die Zeichenklasse f?r alle Buchstaben (der jeweiligen "Locale"-Einstellung) hei?t [:alpha:]
also f?r alle Buchstaben:
'/[[:alpha:]]/'
statt
'/[a-zA-Z???????]/'
Wie w?re es mit:
$strasze = '...';
preg_match(
'/(\A[[:alpha:].\-\ ])(\s+)(\d{1,4}[a-z]?)(\-(\d{1,4}[a-z]?))?\Z/'
$strasze,
$rx_matches
);
Geht alles gut, stehen in $rx_matches die Einzelteile:
$rx_matches[1] = Stra?en-Name
$rx_matches[3] = Hausnummer (von)
$rx_matches[5] = Hausnummer (bis, wenn vorhanden)
Hab ich aber noch nicht getestet ... -.-
Ich wohne "Am Friedhof"...
Aber das Leerzeichen hast du glaube ich nicht beachtet.
Au?erdem, was soll das ?berhaupt bringen?
Halte ich f?r ziemlich sinnlos.
MfG Lucas -
preg_match(
'/(\A[[:alpha:].\-\ ])(\s+)(\d{1,4}[a-z]?)(\-(\d{1,4}[a-z]?))?\Z/'
$strasze,
$rx_matches
);
Ich wohne "Am Friedhof"...
Nicht mein Problem ...
Aber das Leerzeichen hast du glaube ich nicht beachtet.
Au?erdem, was soll das ?berhaupt bringen?
Halte ich f?r ziemlich sinnlos.
MfG Lucas
F?r dich noch mal in dick:
(\A[[:alpha:].\-\ ])
Ich h?tte nat?rlich statt "\ " auch "\s" schreiben k?nnen, aber das ist streng genommen, ja kein Leerzeichen.
Und weil wir gerade beim Kr?mel-Kacken sind: Das Zeichen f?r "von--bis" wird typografisch korrekt eigentlich durch den Unicode 8211 dargestellt, notfalls durch ANSI-Code-150 (Dezimal). Das einfache "Minus" ist da falsch am Platz.
Aber ich muss dir recht geben: Egal, wie kompliziert man den RegEx bastelt, es wird immer wieder Buchstaben-Kombinationen geben, die durchrutschen, obwohl sie ?berhaupt keinen Sinn ergeben:
"1233aXY???-Bier 1234a-9999" w?re in dem Fall auch eine g?ltige Adresse ... -.- -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage