Christof: preg_match ... Ausdruck gesucht!

Hallo,
ich habe im moment ein Brett vor dem Kopf!
Ich muss aus einer Strass mit Hausnummer die Hausnr. extrahieren
Also aus "Doernbergstraße 12" die "12".
Ich habs probiert mit

preg_match('[0-9]{0,}',"Doerenbergstraße 12",$treffer);

In $treffer müsste an der Stelle 0 doch die 12 stehen, aber das tut sie nicht! HAt jemand eine Idee?

Danke sehr!

  1. Hi,

    preg_match('[0-9]{0,}',"Doerenbergstraße 12",$treffer);

    so vielleicht?
    $str =  "Was auch immer platz 10 - 15";
    $reg =  "/^([^0-9]+)([0-9- ]+)$/";
    $xy  =  preg_match($reg, trim($str), $matches);
    $nr  =  $matches[2];

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
  2. Hallo Christof,

    preg_match('[0-9]{0,}',"Doerenbergstraße 12",$treffer);

    In deinem Beispiel fehlen die Delimiter '/' um den regulaeren Ausdruck. Zudem brauchst Du +, bzw {1,}, nicht *, bzw. {0,}. fuer die Haeufigkeit. Dein Ausdruck kann nur Zahlen finden, keine Buchstaben, also Doerenbergstraße 12 wird gefunden, Doerenbergstraße 12b und Doerenbergstraße 12 b hingegen nicht. Im Endeffekt kommst Du auf den folgenden Ausdruck:

    preg_match("/\d+[ ]?\w*/", "Doerenbergstraße 12 b", $treffer);

    print_r($treffer);

    Array
    (
        [0] => 12 b
    )

    Dieter

  3. hi,

    preg_match('[0-9]{0,}', ...

    beschäftige dich bitte wenigstens so grundlegend mit regulären ausdrücken, dass dir die bedeutung des begriffes "delimiter" klar wird.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  4. Hallo Christof!

    Also aus "Doernbergstraße 12" die "12".
    Ich habs probiert mit
    preg_match('[0-9]{0,}',"Doerenbergstraße 12",$treffer);

    Ich würds mal mit /([A-Za-z.-]*) ([0-9]*)/ versuchen.
    In $treffer[0] sollte der Straßenname, in $treffer[1] die Hausnummer stehen.
    (Ich weiß ja nicht, welche Zeichen in Deinen Straßennamen vorkommen, mußt ggf. noch ergänzen.)

    Nunja, ich habe "sollte" geschrieben, weil das Ergebnis ein wenig anders ist, als ich erwartetete.
    aber in $treffer[2] steht zumindest 12 ;)

    Folgender Code ...
    $strasse = 'Doerenbergstraße 12';
    $treffer = array();
    $preg = preg_match('/([A-Za-z.-]*) ([0-9]*)/', $strasse, $treffer);

    ... ergibt für $treffer:
    array
      0 => 'e 12'
      1 => 'e'
      2 => '12'

    Warum das rauskommt ist mir nicht so ganz klar, aber was solls.

    MfG
    Götz

    --
    Losung für Mittwoch, 13. Oktober 2004
    Er ist's, der wechseln lässt Zeiten und Stunden; er setzt Könige ab und setzt Könige ein. (Daniel 2,21)
    Nicht der ist tüchtig, der sich selbst empfiehlt, sondern der, den der Herr empfiehlt. (2. Korinther 10,18)
    (http://www.losungen.de/heute.php3)
    1. Hallo,

      (Ich weiß ja nicht, welche Zeichen in Deinen Straßennamen vorkommen, mußt ggf. noch ergänzen.)

      ß

      Grüße,
      Florian