floater: (Internationale) Telefonnummern bereinigen

Hallo,

kennt jemand eine Funktion, die mir Telefonnummern bereinigt?

Z. B. aus "Bis 18:00 Uhr: (+049) 0851-66526.153 (nur wochentags)"
soll 0049085166526153 gefiltert werden, oder aus "(0049) (+3160) 35 64 52"
"00493160356452" macht?

Vielen dank und Gruß,
Floater

  1. Mahlzeit,

    kennt jemand eine Funktion, die mir Telefonnummern bereinigt?

    Lass mich raten: Datenbank mit Freitextfeldern, in die die Anwender beliebigen Dreck eingeben können, der nicht geprüft wird, bevor er gespeichert wird? So richtig BIBO-Prinzip[*]?

    Z. B. aus "Bis 18:00 Uhr: (+049) 0851-66526.153 (nur wochentags)"
    soll 0049085166526153 gefiltert werden,

    Du meinst eher "004985166526153"?

    oder aus "(0049) (+3160) 35 64 52"
    "00493160356452" macht?

    Mir wäre keine "fertige" Funktion bekannt, die dermaßen viele verschiedene (und teilweise sogar falsche, mehrdeutige und/oder missverständliche) Eingaben IMMER korrekt erkennen, zuordnen und umwandeln kann. Ich denke, Du kommst da um die Selbstentwicklung einer hochkomplexen Funktion (die Du höchstwahrscheinlich doch irgendwann wutentbrannt in die Tonne kloppen wirst, weil sie eben doch nicht 100%ig zuverlässig ist) nicht herum.

    Das oder eine manuelle Bereinigung des Datenbestandes in Kombination mit einer vernünftigen Eingangsprüfung, BEVOR derartiger Müll gespeichert wird.

    MfG,
    EKKi

    [*] Bullshit In - Bullshit Out

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Hallo Floater,

    ich weiß nicht, ob es hier jemanden gibt, der so eine Funktion erstellt und dann freigegeben hat. Da sich Vorwahlen auch ändern können bzw. neue hinzukommen, müsste man scih darüber im Klaren sein, dass man die Liste pflegen muss, sofern man keine entsprechenden Nutzungszugang zur Telekom oder so hat. (Wage ich auch zu bezweifeln)
    Da wir in Deutschland 3 - 6stellige Vorwahlen haben, und Nummern aus ab 3 Ziffern bestehen, könntest du ohne entsprechende Vorwahlenliste kaum eine Funktion bauen, welche selbständig erkennt welcher Teil nun Vorwahl ist und welcher nicht. Und selbst wenn würden z.B. Telefonnummern wie
    030 - 1234567
    0301 - 234567
    nicht auseinander gehalten werden können, sofern man die Zahlenreihe ohne Abtrenner hat.

    Wo man ggf an aktuelle Listen herankommt, keine Ahnung... nach kurzer Google-Suche habe ich den Link hier gefunden.
    http://userpage.chemie.fu-berlin.de/diverse/doc/avon.html

    Evtl. hilft der ein Stück weiter, um eine Datenbank halbherzig zu basteln...

    http://userpage.chemie.fu-berlin.de/diverse/doc/int_tel.html
    Das hier sind Ländervorwahlen, wobei natürlich die Notation und Länge von den deutschen Nummern hier und da abweicht...

    Auch diese Listen könnten weiterhelfen...
    http://telefon-infos.info/Telefon-Vorwahlen-Deutschland/

    Viel Spaß und viel Erfolg...

    1. Hallo,

      danke für Deine Tipps.

      Das Filtern soll aber nicht auf Vorwahl-Verzeichnisse stützen, sondern alleine durch reguläre Ausdrücke etc. beruhen, Entfernen der überflüssigen Zeichen etc.

      Gruß,
      Floater

  3. @@floater:

    Z. B. aus "Bis 18:00 Uhr: (+049) 0851-66526.153 (nur wochentags)"
    soll 0049085166526153 gefiltert werden,

    Dann wäre reichlich unsinnig, da in anderen Ländern ganz andere VAZ als '00' gelten.

    '00' gilt für Deutschland und hat in einer Angabe für internationales Publikum nichts zu suchen, da ist '+' angebracht.

    Live long and prosper,
    Gunnar

    --
    Flughafen in Tempelhof
    findet jeder Hempel doof.
    1. Hallo,

      Dann wäre reichlich unsinnig, da in anderen Ländern ganz andere VAZ als '00' gelten.

      '00' gilt für Deutschland und hat in einer Angabe für internationales Publikum nichts zu suchen, da ist '+' angebracht.

      Danke, aber das ist nicht unsinnig, da diese Nummern nicht für internationales Publikum, sondern für das Inland bestimmt sind.

      Gruß,
      Floater

      1. @@floater:

        '00' gilt für Deutschland und hat in einer Angabe für internationales Publikum nichts zu suchen, da ist '+' angebracht.

        Danke, aber das ist nicht unsinnig, da diese Nummern nicht für internationales Publikum, sondern für das Inland bestimmt sind.

        Dann ist es recht unsinnig, da dann '0049' völlig überflüssig ist: Nicht '00498932168', sondern '089 32168'.

        Live long and prosper,
        Gunnar

        --
        Flughafen in Tempelhof
        findet jeder Hempel doof.
        1. Mahlzeit,

          '089 32168'.

          :-)

          MfG,
          EKKi

          "... und draußen vor der großen Stadt steht der Jugendschutz sich die Füße platt ..."

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        2. Hallo,

          Dann ist es recht unsinnig, da dann '0049' völlig überflüssig ist: Nicht '00498932168', sondern '089 32168'.

          Nein, es ist NICHT unsinnig, da auch ausländische Nummern vorhanden sind, wo die Auslandsvorwahlen davorstehen sollen.

          Ausländische Nummern, die von Deutschland aus gewählt werden.

          Gruß,
          Floater

          1. @@floater:

            Dann ist es recht unsinnig, da dann '0049' völlig überflüssig ist: Nicht '00498932168', sondern '089 32168'.

            Nein, es ist NICHT unsinnig, da auch ausländische Nummern vorhanden sind, wo die Auslandsvorwahlen davorstehen sollen.

            Dann ggfs. bei DIESEN '+' durch '00' ersetzen; bei den Nummern innerhalb der BRD jedoch '+49' durch '0'.

            Live long and prosper,
            Gunnar

            --
            Flughafen in Tempelhof
            findet jeder Hempel doof.
            1. Hallo Gunnar,

              Dann ggfs. bei DIESEN '+' durch '00' ersetzen; bei den Nummern innerhalb der BRD jedoch '+49' durch '0'.

              im Prinzip richtig - aber es schadet ja auch nicht, selbst bei Inlandsgesprächen das Präfix 0049 mitzuwählen. Die Zeiten sind vorbei.

              Ja, vor über zwanzig Jahren hat die Telek^WDeutsche Bundespost solche Gespräche dann als "Auslandsgespräche Zone Europa 1" berechnet. Damals tat man gut daran, überflüssige Vorwahlen wegzulassen. Mittlerweile darf man sie ungestraft mitwählen, wenn man Spaß daran hat.

              Ich speichere Telefonnummern übrigens immer mit vorangestelltem '+' und internationaler Vorwahl, auch wenn es im Kontext nicht nötig wäre.

              Ciao,
               Martin

              --
              Ist die Katze gesund,
              freut sich der Hund.
              1. echo $begrüßung;

                Dann ggfs. bei DIESEN '+' durch '00' ersetzen; bei den Nummern innerhalb der BRD jedoch '+49' durch '0'.
                im Prinzip richtig - aber es schadet ja auch nicht, selbst bei Inlandsgesprächen das Präfix 0049 mitzuwählen. Die Zeiten sind vorbei.

                Bist du sicher? Eben gerade bekam ich von der Telekom auf deutsch, englisch, französisch und spanisch erzählt, dass unter dieser Vorwahl keine Verbindung. (Ja, der Satz im Deutschen kein Verb. In den anderen Sprachen ist jedoch jeweils eins enthalten.) Dieses Verhalten kenne ich schon seit ewig so. Arcor hingegen lässt solch eine Rufnummer zu.

                echo "$verabschiedung $name";

              2. @@Der Martin:

                Ich speichere Telefonnummern übrigens immer mit vorangestelltem '+' und internationaler Vorwahl

                Ich auch. Im Mobiltelefon sowieso (damit die gespeicherten Nummern im Ausland immer noch funktionieren), aber auch sonst. _Ich_ habe auch kein Problem damit, Rufnummern auch als internationale FQTN anzugeben.

                Der OP traut seinen Nutzern dieses Format nicht zu und will es DDAU-sicher machen. (Das erste D steht für „deutscher“.) Dann aber bitte richtig[tm]: '00x' für internationale Vorwahlen, kein '0049' für nationale.

                Ich hatte mit vor einiger Zeit mal ein XSLT-Stylesheet geschrieben, das u.a. aus '+49 89 32168' in der XML-Quelle (vCard-RDF) '089 32168' in der XHTML-Ausgabe machte.

                Live long and prosper,
                Gunnar

                --
                Flughafen in Tempelhof
                findet jeder Hempel doof.
  4. Auf die schnelle und sicher noch nicht ausgereift, als JS. Müsstest du dann noch in PHP das Pattern einbringen mir preg_match oder sonstwas.

    <script type="text/javascript">
    function filternum(string)
    {
    zahl = string.replace(/[^0-9]/g,'');

    return zahl;
    }
    </script>
    <input type="text" size="60" onclick="alert(filternum(this.value));" value="32432sdfds8889sdf dfsfd .fgfrge(sdd-q3qreew" />

    Hans