Sven Wagener: Check der neuen umlaute in de domains

Hallo alle miteinander,

folgendes Problem: Ich habe eine Klasse geschrieben (http://www.phpclasses.org/browse.html/package/694.html) um Domains auf ihre Gültigkeit sowie auf die Verfügbarkeit abzuprüfen.

Die Denic führt ab dem 1.März die neuen .de Domains ein, so dass es eine ganze Reihe an neuen Sonderzeichen geben wird (http://www.denic.de/de/domains/idns/liste.html).

Somit komme ich zu meinem Problem:

Ich will den Domainnamen mittels RegEx auf seine Gültigkeit überprüfen. Das klappt derweil auch wunderbar, nur kann ich etliche der neuen Umlaute erst gar nicht in meiner PHP Klasse speichern, sondern sie werden durch andere Zeichen ersetzt, da dem Editor bzw. dem Betriebsystem die Zeichen anscheinend einfach fehlen.

Hat jemand einen Tipp für mich, wie ich die neuen Sonderzeichen abprüfen kann?

Vielen Dank schon einmal im Vorraus!

Mit freundlichen Grüssen,

Sven Wagener.

  1. Hallo,

    Hat jemand einen Tipp für mich, wie ich die neuen Sonderzeichen abprüfen kann?

    Definiere sie ueber ihre "Ordnungsnummer".
    Den String fuer die RegExp kannst Du ja dann zusammenbauen.

    $ae=chr(220);
    $oe=chr(246);
    $ue=chr(252);

    $sonderzeichen=$ae.$oe.$ue;

    Ich weiss allerdings nicht, bis zu welcher Zahl
    chr() geeignet ist. Im Manual
    http://www.php.net/manual/en/function.chr.php
    ist nur die Rede von "ASCII".

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. $ae=chr(220);
      $oe=chr(246);
      $ue=chr(252);

      Danke für den Hinweis! Es scheint aber wirklich nach der ASCII Tabelle zu gehen. Irgendwie funtioniert es halt nur Stellenweise.

      Für weitergehende Hinweise wäre ich in jedem Fall dankbar!

      Sven.

      1. Huhu Sven

        wenn Deine RegExp auch Umlaute matchen soll musst Du setlocale
        benutzen.

        http://de3.php.net/manual/en/function.setlocale.php

        Z.B. so:

        $loc_de = setlocale(LC_ALL, 'de_DE@euro');

        Viele Grüße

        lulu

        --
        bythewaythewebsuxgoofflineandenjoytheday
  2. Moin!

    Ich will den Domainnamen mittels RegEx auf seine Gültigkeit überprüfen. Das klappt derweil auch wunderbar, nur kann ich etliche der neuen Umlaute erst gar nicht in meiner PHP Klasse speichern, sondern sie werden durch andere Zeichen ersetzt, da dem Editor bzw. dem Betriebsystem die Zeichen anscheinend einfach fehlen.

    Die Sache ist noch viel schlimmer!

    Grundsätzlich kann eine Domain alle möglichen und unmöglichen Sonderzeichen enthalten. Es gibt ja einige hundert Sprachen, und Unicode ist nicht umsonst so umfangreich. Sämtliche Unicodezeichen könnten zumindest theoretisch in einem Domainnamen vorkommen.

    Die Denic hat den für sie erlaubten Zeichenvorrat allerdings auf die "typischen", auf deutschen Tastaturen vorkommenden Zeichen beschränkt. Also Umlaute (äöü), Akzente (áéíóúàèìòù), c-cedil, blah blah blah... Einzige Ausnahme: Es gibt kein ß!

    Andere Top-Level-Domains werden aber vermutlich ganz andere Beschränkungen haben. Also muß deine Prüfung, sofern sie wirklich korrekt sein will, indem sie technisch unmögliche Domains ausschließt, im Prinzip sämtliche Domainerlaubnisse aller weltweit verfügbaren Top-Level-Domains kennen müssen, damit eine ungültige .de-Domain als solche erkannt wird, obwohl derselbe Name als .com-Domain regelgerecht wäre.

    Hat jemand einen Tipp für mich, wie ich die neuen Sonderzeichen abprüfen kann?

    Prüfe auf das Vorhandensein von diversen Punkten. Oder transformiere die hereinkommenden Domains in ihr Punycode-Äquivalent (wie man dazu vorgehen muß, steht in irgendeiner RFC) und prüfe dann wie bisher, ob die Domain regelgerecht nur mit ASCII aufgebaut ist (wobei das bei Umlaut-Domains sehr wahrscheinlich sein dürfte).

    Abgesehen von deinem konkreten Problem: Ich denke nicht, dass spontan mit Einführung der Umlautdomains schon irgendjemand diese auch aufrufen kann. Es gibt noch keine mir bekannte Software, die das kann. Sicher: Die Nameserver kriegen keine Umlaute mit, sondern das in Punycode konvertierte Äquivalent, und haben deshalb auch keinerlei Problem damit, den konvertierten Namen aufzulösen. Aber wer wandelt die Domain mit Umlauten in Punycode?

    Solange die Gefahr besteht, dass eine Domain mit Umlauten nicht von allen anderen Benutzern erreichbar ist, kann man sie praktisch nicht verwenden. Nicht für Webseiten, nicht für Mails. Eben genau deshalb, weil es ein vielfältiges Softwareproblem ist, denn wer weiß schon genau, wo überall solche Domainprüfungen enthalten sind, wie bei dir. Wer merkt das? Und wer ändert das dann? Und zu guter letzt: Wer bezahlt das?

    - Sven Rautenberg

    --
    Die SelfHTML-Developer sagen Dankeschön für aktuell 21335,05 Euro Spendengelder!
    1. Hello,

      Die Sache ist noch viel schlimmer!

      Grundsätzlich kann eine Domain alle möglichen und unmöglichen Sonderzeichen enthalten. Es gibt ja einige hundert Sprachen, und Unicode ist nicht umsonst so umfangreich. Sämtliche Unicodezeichen könnten zumindest theoretisch in einem Domainnamen vorkommen.

      Die Denic hat den für sie erlaubten Zeichenvorrat allerdings auf die "typischen", auf deutschen Tastaturen vorkommenden Zeichen beschränkt. Also Umlaute (äöü), Akzente (áéíóúàèìòù), c-cedil, blah blah blah... Einzige Ausnahme: Es gibt kein ß!

      Andere Top-Level-Domains werden aber vermutlich ganz andere Beschränkungen haben.

      ###############################################################
         #                                                             #
         #     Das ist Zugriffskotrolle / Zensur durch die Hintertür   #
         #                                                             #
         #        Deutsche Internetnutzer werden hier verarscht!       #
         #                                                             #
         ###############################################################

      Es gibt schon seit Jahren US-Domains mit Umlauten, die mit den
         in Deutschland verteilten Browsern nicht aufrufbar sind
         oder sind nur die DNS-Server daran schuld? Oder sind es die

      korrupten Politiker?

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen