Regulärer Ausdruck

  • Hallo,


    hoffe es kann mir jemand helfen.
    Ich muss eine Zahl prüfen und "zurechtformen".


    Das Ergebniss soll immer so aussehen:
    1234-1234567
    oder
    1234-12345678


    Also erst 4 Ziffern dann - und dann nochmal 7 bzw. 8 Ziffern.


    Die Usereingabe sieht so aus:
    1234 1234567 bzw. 12341234567


    Wie kann ich nun immer nach der 4 Ziffer den Strich einfügen und danach die restlichen 7 bzw. 8 Ziffern.


    Ich habe mir das gebastelt, klappt aber leider nicht :(


    Würde mich über einen Tipp freuen. Danke!


    Viele Grüße,
    Tobias

  • [PHP]<?php


    $input = '1234 1234567';
    $input = preg_replace('/[^0-9]+/', '', $input);


    if(strlen($input) >= 5)
    {
    $output = substr($input, 0, 4).'-'.substr($input, 4);
    }
    else
    {
    $output = false;
    }


    var_dump($output);


    ?>[/PHP]
    Würde vermutlich auch mit sprintf() gehen, aber dazu war ich gerade zu faul :D
    Eine Überprüfung wie bei deinem Code, ob es überhaupt xxx Zahlen sind, fehlt in meinem Beispiel natürlich noch.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Hallo,
    wenn man nur Intege Werte hat, lohnt es sich auch jene als solche zu casten mit:

    Zitat

    intval()
    #(schnell)
    (int) //Anwendungesbeispiel darunter
    $string = (int)$_GET['var'];
    #(etwas langsamer und ja ungewohnt)


    Am Ende kommen dabei dann wirklich nur Zahlen raus, allerdings kann man das natürlich noch etwas schöner machen indem man es wirklich überprüft, dann könnte man auch ggf. bei Falscheingabe eine Fehlermeldung machen!
    Grüsse!

  • Zitat von Michael;9828

    wenn man nur Intege Werte hat, lohnt es sich auch jene als solche zu casten mit


    Nur schlägt das in manchen Ausnahmefällen fehl, wenn man z.B. Eingaben mit Sonderzeichen oder Leerzeichen wie hier hat. Die verarbeitet PHP dann teilweise recht lustig. Manchmal fehlt dann alles ab dem Sonderzeichen, manchmal beginnt erst alles ab dem Zeichen und manchmal kommt einfach nur 0 heraus, habe ich schon alles erlebt in den vergangenen PHP Versionen :cool:



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Ja, das stimmt.
    Ich selbst verwende aber für eine Telefonnummer 2 Inputs für Vorwahl und die eigentliche Rufnummer.
    Daher passiert sowas bei mir in der Regel nicht.
    :)

  • Zitat von Michael;9845

    2 Inputs für Vorwahl und die eigentliche Rufnummer


    Das ist natürlich der Idealfall :)



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)