Check der neuen umlaute in de domains
Sven Wagener
- php
0 Thomas Luethi0 Sven Wagener0 lulu
0 Sven Rautenberg0 Tom
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.
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
$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.
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
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
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