Frage zu regulären Ausdrücken

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
LuLa
Mitglied
Beiträge: 290
Registriert: 14.02.2004 12:26

Frage zu regulären Ausdrücken

Beitrag von LuLa »

Hi,
ich möchte aus einem String den häufig vorkommenden Fehler beseitigen, daß die Leute zwischen Straße und Hausnummer kein Leerzeichen setzen. Aus "Teststr.12" soll "Teststr. 12" werden.

So in der Art:

Code: Alles auswählen

$adresse = ereg_replace('str.([0-9]{1,2,3})', 'str. \\1', $adresse);
Leider bekomme ich das nicht hin. Weiß jemand Rat?
Danke im voraus.


LuLa
Benutzeravatar
Underhill
Mitglied
Beiträge: 1180
Registriert: 24.09.2003 11:40
Wohnort: 742 Evergreen Terrace

Beitrag von Underhill »

Hi,

direkt helfen kann ich bei der Expression jetzt leider nicht.

Ich moechte nur sagen das das ganze etwas schwerer wird als du glaubst:

Was ist mit "Testtr.12a"? Oder wenn jemand "Teststraße12" eingibt? Diese Fälle sollten auch betrachtet werden...

Da ich davon ausgehe das das ganze nur Kosmetik ist würde ich es lieber manuell machen. Wenn du dir aber eine internationale Strassenstammdatenbank aufbauen willst ist es besser die Felder zu trennen...


Gruss
Underhill

PS: Ich habe im Kopf das internationale Strassen (England oder USA) zu Teil wirklich Nummern enthalten koennen. Habe aber gerade kein Beispiel zur Hand..
Zuletzt geändert von Underhill am 29.07.2007 18:34, insgesamt 2-mal geändert.
Benutzeravatar
LuLa
Mitglied
Beiträge: 290
Registriert: 14.02.2004 12:26

Beitrag von LuLa »

Underhill hat geschrieben:Oder wenn jemand "Teststr.12" eingibt?
Hatte ich doch geschrieben...
Benutzeravatar
Underhill
Mitglied
Beiträge: 1180
Registriert: 24.09.2003 11:40
Wohnort: 742 Evergreen Terrace

Beitrag von Underhill »

Hi,

war ein Tippfehler - Ist geändert...

Gruss
Underhill
Benutzeravatar
LuLa
Mitglied
Beiträge: 290
Registriert: 14.02.2004 12:26

Beitrag von LuLa »

Ich glaub ich hab's:

Code: Alles auswählen

$adresse = ereg_replace('str.([0-9]{1,3})', 'str. \\1', $adresse);
Benutzeravatar
StarWolf3000
Mitglied
Beiträge: 1019
Registriert: 25.07.2005 10:20
Wohnort: Stolpen
Kontaktdaten:

Beitrag von StarWolf3000 »

ich würde sowieso PCRE Ausdrücke bevorzugen:

Code: Alles auswählen

// Für str.
$adresse = preg_replace("/str\.([0-9]{1,3})([A-H]{0,1})/i", "str. $1$2", $adresse);

// Für strasse/straße
$adresse = preg_replace("/strasse([0-9]{1,3})([A-H]{0,1})/i", "strasse $1$2", $adresse);
$adresse = preg_replace("/straße([0-9]{1,3})([A-H]{0,1})/i", "straße $1$2", $adresse);
Man beachte: der . muss maskiert werden mit \

Ich habs auch gleich so abgeändert, dass mindestens 1 Ziffer aber höchstens 3 Ziffern nach dem Punkt folgen und danach optional max. 1 Buchstabe von A-H (Groß-, Kleinschreibung wird nicht beachtet durch das i nach dem / )
Zuletzt geändert von StarWolf3000 am 29.07.2007 19:24, insgesamt 1-mal geändert.
MOD-Einbauhilfe und Installationen über ICQ, TeamSpeak 2/3 und TeamViewer. Support nur im Forum, eingeschränkt per TeamViewer, aber nicht mehr per PN! • KB:knigge
Benutzeravatar
Underhill
Mitglied
Beiträge: 1180
Registriert: 24.09.2003 11:40
Wohnort: 742 Evergreen Terrace

Beitrag von Underhill »

Hi,

oder so:

Code: Alles auswählen

$adresse = preg_replace("/([a-z\.])([0-9])/", "\\1 \\2", $adresse);
Hausnummer koennen mehr als drei Stellen haben ;-)

Gruss
Underhill
Benutzeravatar
StarWolf3000
Mitglied
Beiträge: 1019
Registriert: 25.07.2005 10:20
Wohnort: Stolpen
Kontaktdaten:

Beitrag von StarWolf3000 »

Underhill hat geschrieben:Hi,

oder so:

Code: Alles auswählen

$adresse = preg_replace("/([a-z\.])([0-9])/", "\\1 \\2", $adresse);
Hausnummer koennen mehr als drei Stellen haben ;-)

Gruss
Underhill
Echt? Nun ja, aber hierzulande hab ich noch keine Hausnummer gesehen, die mehr als 3 Ziffern in der Nummer hat
MOD-Einbauhilfe und Installationen über ICQ, TeamSpeak 2/3 und TeamViewer. Support nur im Forum, eingeschränkt per TeamViewer, aber nicht mehr per PN! • KB:knigge
Benutzeravatar
Underhill
Mitglied
Beiträge: 1180
Registriert: 24.09.2003 11:40
Wohnort: 742 Evergreen Terrace

Beitrag von Underhill »

Hi,
StarWolf3000 hat geschrieben:Echt? Nun ja, aber hierzulande hab ich noch keine Hausnummer gesehen, die mehr als 3 Ziffern in der Nummer hat
was glaubst wo z.B. 4711 herkommt? :wink:

PS: "Test Strasse2-8" klappt mit meiner auch..


Gruss
Underhill
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Warum nehmt ihr nicht einfach zwei Felder? Eins für die Strasse und eins für die Hausnummer...
KB:knigge
Antworten

Zurück zu „Coding & Technik“