Mir schwirrt schon total der Schädel von meinem RegEx-Pattern... Irgendwie stehe ich auf dem Schlauch und bräuchte eine kleine Hilfe.
Folgendes Skript:
Ausgabe soll sein:
Im Prinzip ist es von der Logik her gar nicht soo schwer:
Wie man sehen kann, habe ich bei Nummer 4 mein eigentliches Problem. Ich weiß nicht genau, wie ich mit dem Pipezeichen arbeiten kann. Theroretisch ja einfach meine "Expression" einklammern und, wie im Code eben auch, "pipen". Aber irgendwie zerhaut es mir dann alles?
Wahrscheinlich habe ich irgendwo nen grundlegenden Denkfehler. Ich arbeite so selten mit Regular Expressions...
Bin für alle Hilfen dankbar, sitze jetzt schon ne Weile vor allen möglich Live-RegEx-Testern und Hilfe-Seiten, aber ich komme nicht drauf^^
Folgendes Skript:
PHP:
<?php
$string = "Bognerstraße 29";
$string = "Bognerstraße 29";
$string = "Bognerstraße 29 RH";
$string = "Bognerstraße 29 RH 3.OG";
$string = "Bognerstraße 29 3.OG";
$string = "Bognerstraße 29 3.OG RH";
$string = "Bognerstraße 29 RH";
$string = "Bognerstraße 29 3OG";
$string = "Bognerstraße 29a";
$string = "Bognerstraße 29 a";
$string = "Bognerstraße 29 a RH";
$string = "Bognerstraße 29 a RH 3.OG";
$string = "Bognerstraße 29 a 3.OG";
$string = "Bognerstraße 29 a 3.OG RH";
$string = "Bognerstraße 29 aRH";
$string = "Bognerstraße 29 a3OG";
$string = "Bognerstraße 29a RH";
$string = "Bognerstraße 29a RH 3.OG";
$string = "Bognerstraße 29a 3.OG";
$string = "Bognerstraße 29a 3.OG RH";
$string = "Bognerstraße 29aRH";
$string = "Bognerstraße 29a3OG";
// altes Pattern (hatte Probleme beim Splitten z.B. von "[...]straße 29 RH")
$pattern = '/[a-zA-ZäöüÄÖÜß\s]+ [0-9]+[\s]*[a-zA-Z]?[\s]*/is';
// neues Pattern - funktioniert leider nicht wie erwünscht
$pattern = '/[a-zA-ZäöüÄÖÜß\s]+[0-9]*[\s]*([a-zA-Z]?[\s]+)|[\s]*/is';
$result = preg_split($pattern, $string);
echo print_r($result);
?>
Ausgabe soll sein:
Code:
(je nach vorhandenen Angaben im $string)
$result[0] => "Bognerstraße 29a"
bzw.
$result[0] => "Bognerstraße 29 a"
bzw.
$result[0] => "Bognerstraße 29"
bzw.
$result[0] => "Bognerstraße"
sowie
$result[1] => "[Rest]"
Im Prinzip ist es von der Logik her gar nicht soo schwer:
Code:
1.) Beliebige Zeichenkombination (ohne Zahlen) ([a-zA-ZäöüÄÖÜß\s]+)
2.) Beliebige Anzahl von Zahlen ([0-9]*)
3.) Beliebige Anzahl von Whitespaces ([\s]*)
4.) Genau ein Buchstabe(n) und beliebige Anzahl von Whitespaces, aber kein weiterer Buchstabe
ODER: kein Buchstabe und beliebige Anzahl von Whitespaces
5.) Beliebige Zeichenkombination >= 1 ([a-zA-ZäöüÄÖÜß0-9\s]*)
Wie man sehen kann, habe ich bei Nummer 4 mein eigentliches Problem. Ich weiß nicht genau, wie ich mit dem Pipezeichen arbeiten kann. Theroretisch ja einfach meine "Expression" einklammern und, wie im Code eben auch, "pipen". Aber irgendwie zerhaut es mir dann alles?
Wahrscheinlich habe ich irgendwo nen grundlegenden Denkfehler. Ich arbeite so selten mit Regular Expressions...
Bin für alle Hilfen dankbar, sitze jetzt schon ne Weile vor allen möglich Live-RegEx-Testern und Hilfe-Seiten, aber ich komme nicht drauf^^