Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme beim formatieren von Telefonnummern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme beim formatieren von Telefonnummern

    Hi,

    ich habe ein kleines Programm geschrieben, das die verschieden eingetragenen Telefonnummern in ein einheitliches Format darstellen soll. Dazu verwende ich eine Datei, in der sämtliche deutschen Telefonvorwahlen sowie die Handyvorwahlen aufgeführt sind. Leider gibt es einen Fehler. Aber ich weiß einfach nicht, wie ich den beseitigen kann. Soweit ich weiß, sorgt doch die "\b" Syntax dafür, das ein Eintrag nur am Anfang einer Telefonnummer durchgeführt werden soll und die "[^\(" Syntax, das eine Ersetzung nicht vollzogen werden soll, wenn am Anfang der Telefonnummer schon eine Klammer auf steht. Aber wahrscheinlich bin ich komplett auf dem Holzweg. Könnt Ihr mir helfen?

    Danke im voraus für Eure Hilfe



    PHP-Code:
    $text="01620421118 oder 0151-71044980 oder ++49 015900602900 oder (01578) 4075464 oder 01577/ 0090750 oder 02129027590 oder 0212027590 (privat)";
    $s1=preg_replace ("/\+?\+49(\s?)0/","0","x ".$text);
    $s1=preg_replace ("/\+?\+49(\s?)1/","01",$s1);
    $s1=preg_replace ("/([0-9]{3,6}(?:\)|\-|\/?))(\s)([0-9]{4,})/","$1$3",$s1);
    $s1=preg_replace ("/((?:\()([0-9]{4,5})(?:\)))/","$2",$s1);
    $s1=preg_replace ("/\-|\//","",$s1);
    preg_match_all("/\b(0151|0152|0157|0159|0160|0162|0163|0170|0171|0172|0173|0174|0175|0176|0177|0178|0179)[0-9]{7,8}\b/",$s1,$s2);
    $handy=trim($s2[0][0]); // gibt die erst gefundene Handynummer alternativ nur als Zahl aus.
    $s3 file("test.dat");
    $s4=count ($s3);
    $s5=0;
    while (
    $s5<$s4)
    {
    $s1=preg_replace ("/\b[^\(]".trim($s3[$s5])."/"," (".trim($s3[$s5]).")",$s1);   // hier liegt der Fehler
    $s5++;
    }
    $s1=substr($s12);
    echo 
    "gewünschte Ausgabe: (0162)0421118 oder (01517)044980 oder (01590)0602900 oder (01578)075464 oder (01577)090750 oder (02129)027590 oder (0212)027590 (privat) ";
    echo 
    "<br><br>jetzige Ausgabe: ".$s1

    test.dat (Natürlich nur ein kleiner Ausschnitt mit den Vorwahlen, die für das Beispiel benötigt werden.)
    Code:
    01517
    01577
    01578
    01590
    0162
    02129
    0212
    02759
    0421
    04498
    06029
    07546
    09075


  • #2
    https://regex101.com/

    Da kannst du das ganze ausprobieren und musst weniger "raten". Abgesehen davon, wenn es einen "Fehler" gibt ist es nicht schlecht die entsprechende Fehlermeldung mit uns zu teilen.

    Kommentar


    • #3
      Hmmm,

      danke für den Tip. Aber ich finde den Fehler einfach nicht. Damit meine ich, das es keine Fehlermeldung gibt sondern die Telefonnummern fehlerhaft wiedergegeben werden. Siehe hierzu meinen Script ...

      Kommentar


      • #4
        So, ich scheine jetzt doch die Lösung gefunden zu haben. Folgende Zeilen müssen wie folgt geändert werden:


        PHP-Code:
        $s1=preg_replace ("/\+?\+49(\s?)0/","0",$text);

        $s1=preg_replace ("/(\s|^)".trim($s3[$s5])."/"," (".trim($s3[$s5]).")",$s1);

        // $s1=substr($s1, 2); 

        Kommentar

        Lädt...
        X