erste ziffer in string suchen
bertl47
- php
0 Joachim1 Gunnar Bittersmann
0 bertl47
0 Tom0 bleicher
Hallo, ich bitte um Hilfe für folgende Aufgabe ( sehe im Moment den Wald vor lauter Bäumen nicht, brauche einen kleinen Tritt ... )
Wie suche in nach der ersten Ziffer in einem String?
Habe in meiner mysql-DB das Feld Strasse:
Inhalt z.B.: Hauptstrasse 31a
Ich möchte nun 2 Felder machen (Strasse und extra Hausnummer )
ich möchte irgendwie suchen an welcher Stelle im String irgendeine Ziffer vorkommt um so das Feld zu splitten.
Muss ich da mit einer Schleife jede Stelle im String nach 0-9 durchsuchen oder gibt es da evtl. schon etwas einfachers, fertiges ?
Vielen Dank
Herbert
Hi,
Muss ich da mit einer Schleife jede Stelle im String nach 0-9 durchsuchen oder gibt es da evtl. schon etwas einfachers, fertiges ?
zum Beispiel mit preg_match und regulären Ausdrücken.
Gruesse, Joachim
@@Joachim:
nuqneH
zum Beispiel mit preg_match und regulären Ausdrücken.
1. Nein, besser nicht. Zitat 1418. Mit einer Schleife durch den String zu gehen dürfte performanter sein.
2. Das löst das Problem nicht.
Qapla'
Hi
- Nein, besser nicht. Zitat 1418.
nun ja. Diesem Zitat schliesse ich mich nicht an.
Mit einer Schleife durch den String zu gehen dürfte performanter sein.
Aber nur dann, wenn man tatsächlich die erste Zahl im String sucht, was - wie Du selber nahegelegt hast - hier nicht angebracht ist
- Das löst das Problem nicht.
Damit lassen sich jedenfalls mehr Eventualitäten berücksichtigt als mit eine Schleifendurchlauf.
Gruesse, Joachim
@@bertl47:
nuqneH
Wie suche in nach der ersten Ziffer in einem String?
Wie sollte dir das bei deinem Problem weiterhelfen?
Habe in meiner mysql-DB das Feld Strasse:
Inhalt z.B.: Hauptstrasse 31a
Ich möchte nun 2 Felder machen (Strasse und extra Hausnummer )
Warum willst du das tun?
ich möchte irgendwie suchen an welcher Stelle im String irgendeine Ziffer vorkommt um so das Feld zu splitten.
"Straße des 17. Juni 135" aufteilen in "Straße des" und "17. Juni 135"?
Und dass bei vielen Adressen die Hausnummer vor der Straße steht, wäre auch zu bedenken.
gibt es da evtl. schon etwas einfachers, fertiges ?
Wohl nicht. Etwas Einfaches schon gar nicht. „Wenn die Felder zusammengesetzt wurden, ist es praktisch unmöglich, sie automatisch wieder zu trennen.“ [MudGuard]
Qapla'
@@bertl47:
nuqneH
Wie suche in nach der ersten Ziffer in einem String?
Wie sollte dir das bei deinem Problem weiterhelfen?
Habe in meiner mysql-DB das Feld Strasse:
Inhalt z.B.: Hauptstrasse 31a
Ich möchte nun 2 Felder machen (Strasse und extra Hausnummer )Warum willst du das tun?
ich muss die Daten einmalig an ein anderes Adressprogramm exportieren in dem diese 2 Felder vorgegeben sind
ich möchte irgendwie suchen an welcher Stelle im String irgendeine Ziffer vorkommt um so das Feld zu splitten.
"Straße des 17. Juni 135" aufteilen in "Straße des" und "17. Juni 135"?
Und dass bei vielen Adressen die Hausnummer vor der Straße steht, wäre auch zu bedenken.
... ja, das habe ich noch gar nicht bedacht
Ziffern am Anfang wäre ja noch abzufangen, aber das Beispiel Strasse des 17 Juni hat schon was für sich
Fazit: Vielen Dank für die Hinweise, werde es wohl nicht lösen können
gibt es da evtl. schon etwas einfachers, fertiges ?
Wohl nicht. Etwas Einfaches schon gar nicht. „Wenn die Felder zusammengesetzt wurden, ist es praktisch unmöglich, sie automatisch wieder zu trennen.“ [MudGuard]
Qapla'
Hello,
Wie suche in nach der ersten Ziffer in einem String?
Inhalt z.B.: Hauptstrasse 31a
Unter Berücksichtigung der Bedenkenträger dieses Threads sollte es möglich sein, die pragmatischste Lösung zu finden :-)
Damit dürften nach dem Bauchgefühl und der bisherigen Erfahrung mehr als 95% der Datensätze keiner manuellen Nachpflege bedürfen.
Diese Überlegungen sollte man dann vielleicht in die zu erstellende Funktionengruppe einfließen lassen ;-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
Unter Berücksichtigung der Bedenkenträger dieses Threads sollte es möglich sein, die pragmatischste Lösung zu finden :-)
tatsächlich? ;-)
- Felder, die vor der ersten Ziffer keine Buchstaben haben, sind auffällig
So wie beispielsweise "76, Riverside Drive"? - Bis jetzt war noch keine Rede davon, dass es ausschließlich um deutsche Adressen geht. Dass in manchen Ländern die Hausnummer vor der Straße notiert wird, hat Gunnar ja schon erwähnt, und der OP hat diesen Hinweis bereitwillig aufgenommen.
- Felder, die nach der späteren Ziffernfolge noch mehr als ein anderes Zeichen
(mit Ausnahme von Leerzeichen) haben, sind auffällig
So wie beispielsweise "Brekkenweg 134, Bungalow No. 95"?
Damit dürften nach dem Bauchgefühl und der bisherigen Erfahrung mehr als 95% der Datensätze keiner manuellen Nachpflege bedürfen.
Ich fürchte, dein Bauch trügt. Die Schreibweise von Adressen ist einmal von Land zu Land grundsätzlich unterschiedlich; aber auch innerhalb eines Landes treten teils so viele Variationen auf, dass es problematisch wird. Was ist zum Beispiel mit der Innenstadt Mannheims mit ihren Koordinaten anstatt herkömmlicher Straßennamen?
Diese Überlegungen sollte man dann vielleicht in die zu erstellende Funktionengruppe einfließen lassen ;-)
Ich würde eher empfehlen, Zusammengehörendes auch zusammen zu lassen.
Schönes Wochenende,
Martin
@@Der Martin:
nuqneH
So wie beispielsweise "Brekkenweg 134, Bungalow No. 95"?
Naja, solche Zusätze sind nicht sooo häufig. Sowas wie "Brekkenweg 134a" allerdings.
Qapla'
Moin!
So wie beispielsweise "Brekkenweg 134, Bungalow No. 95"?
Naja, solche Zusätze sind nicht sooo häufig. Sowas wie "Brekkenweg 134a" allerdings.
Aber sie kommen vor. Genauso wie "Irgendeinestraße 23, Hinterhaus 2". Da geht der Postbote dann durch das Hausportal in den Hinterhof zum dort nachträglich platzierten Haus und wirft die Post dort ein.
- Sven Rautenberg
@@Sven Rautenberg:
nuqneH
Aber sie kommen vor.
Ja, natürlich. Aber nicht so häufig wie Hausnummern à la 134a.
Der Gedanke war doch, die Daten weitestgehend automatisiert umzuwandeln und die „auffälligen“ Daten für die nachträgliche Bearbeitung von Hand zu kennzeichnen.
Der Algorithmus sollte möglichst 134a nicht „auffällig“ finden, sondern als Hausnummer erkennen.
Qapla'
Hello,
Der Gedanke war doch, die Daten weitestgehend automatisiert umzuwandeln und die „auffälligen“ Daten für die nachträgliche Bearbeitung von Hand zu kennzeichnen.
Der Algorithmus sollte möglichst 134a nicht „auffällig“ finden, sondern als Hausnummer erkennen.
So war es gedacht.
Aber wie hier schon gesagt wurde, muss man bei solchen Tools natürlich etwas über die Semantik der vorliegenden Daten, also auch den Sprachraum mit seinen Eigentümlichkeiten wissen. Ich war erstmal nur von deutschen Verhältnissen ausgegangen und hatte noch die Programme im Hinterhirn, die ich vor gefühlten 500 Jahren für die Postleitzahlumstellung geschrieben habe. Die haben alle bestens funktioniet und nur ca. 1% händischen Nacharbeitungsbedarf gehabt, den sie auch sauber isoliert haben vom umgestellten Bestand.
Da gab es allerdings zusätzlich noch Kontrollisten zur Gegenprüfung komplizierter Fälle.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Grüße,
vielleicht, mit sehr viel vorsicht - wäre regural expression eine hilfe - etwas wie
preg_replace_callback("\D+?)(\d+)","speichern_getrennt",$zusammen)
MFG
bleicher
notiz für mich: wenn man ein fenster seit paar stunden offen hat, erst refreshen dann antworten >_<
MFG
bleicher