• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Alle Zeichen nach letztem Leerzeichen verarbeiten

skizZ

Mitglied
Hallo zusammen,

ich habe eine Excel Datei, die mit Kundendaten gefüllt ist. Diese möchte ich dann nach XML umwandeln.
Diese XML Datei möchte ich nun in meine MySQL Datenbank einlesen.

Nun stehe ich allerdings vor dem Problem, dass diese Datei nicht zu 100% gepflegt wurde. Es existiert keine Hausnummer, diese wurde einfach mit in die Straße reingeschrieben.

Gibt es nun eine Möglichkeit, immer die Zeichen nach dem letzten Leerzeichen zu verarbeiten?

Beispiel:

Test Straße 1
Teststraße 1

Hierbei sollen dann immer der Straßenname sowie die Hausnummer separiert werden. Ich hoffe es hat hierfür jemand eine Lösung :)

Viele Grüße
skizZ
 
Werbung:
Hallo,

ich glaube, dass ich es mal so versuchen werden:

- explode
- länge des arrays auslesen
- letztes element ist die hausnummer
 
Werbung:
Schnelle und effektive Lösung:

PHP:
<? 
$string = "Auf der Höhe 12";
$teile = explode(" ", $string);
$hausnr = array_pop($teile);
$strasse = implode(" ", $teile);
?>

Irgendwie kann ich hier die Antwort nicht als PHP formatieren. Was da los?
 
gewöhn' dir an, auf short-tags wie <? ?> zu verzichten, da das kompatibilitätsprobleme auslösen und das dokument auf manchen servern als ASP deklariert werden könnte. desweiteren sollten landeseigene zeichen (umlaute usw.) maskiert werden, damit sie unter jedem zeichensatz lesbar werden und keine unschönen fragezeichenplatzhalter entstehen.

wie versuchst du denn, die erbegnisse auszugeben?

Nils aka XraYSoLo
 
Werbung:
Hallo,

das war ma eben schnell hingeklatscht :-) Muss das natürlich noch anpassen und verfeinern.

Was meinst du mit "ausgeben"? Einfach echo, oder? =)
 
ja, das frag' ich dich, wie du das überhaupt ausgeben willst (weil es ja laut post nicht funktioniert).

Nils aka XraYSoLo
 
XraYSoLo schrieb:
du kannst dich mal in POSIX einlesen, aber das thema hats in sich.

Du meinst Regex, nicht POSIX.

Die ereg-Funktionen sind als deprecated ausgewiesen und sollten nicht mehr verwendet werden. Die empfohlene Regex-Bibliothek für PHP ist PCRE.

- PHP: PCRE - Manual

desweiteren sollten landeseigene zeichen (umlaute usw.) maskiert werden, damit sie unter jedem zeichensatz lesbar werden und keine unschönen fragezeichenplatzhalter entstehen.

Wenn überhaupt dann nur bei der Ausgabe, auf keinen Fall in der Datenbank. Die Seite einfach als UTF-8 auszuliefern, wäre aber die bessere Wahl.

Hier eine Lösung mit regulärem Ausdruck:

PHP:
<?php

function f($address)
{
    return preg_split('/ (?=\d+$)/', $address);
}

$demos = array(
    'Auf der Höhe 12',
    'Rathausplatz',
    'Im Busche 4, Zimmer 9'
);

foreach ($demos as $demo) {
    var_dump(f($demo));
}

/*
array(2) {
  [0]=>
  string(13) "Auf der Höhe"
  [1]=>
  string(2) "12"
}
array(1) {
  [0]=>
  string(12) "Rathausplatz"
}
array(2) {
  [0]=>
  string(19) "Im Busche 4, Zimmer"
  [1]=>
  string(1) "9"
}
*/

Hier wird eine Assertion genutzt.

- PHP: PCRE regex syntax - Manual

PS:

ja, das frag' ich dich, wie du das überhaupt ausgeben willst (weil es ja laut post nicht funktioniert).

Falls du dich auf Post #5 beziehst: Dort ist vermutlich die Formatierung für PHP-Quellcode des BBCodes im Forum gemeint. Das Problem verstehe ich aber ebenfalls nicht. Bei mir sieht es richtig aus.
 
Werbung:
Hallo,

danke für die Lösungmöglichkeit, mermshaus.

Die fehlenden Formatierungsmöglichkeiten liegen wohl damit zusammen, dass ich die "Direkt antworten" Funktion benutze habe :-)
 
Zurück
Oben