Domain validáció + IDN
Sziasztok,
Egy Symfony2 projekthez szükségem van domain validációra, viszont problémába ütköztem a nemzetközi domainekkel.
Jelenleg a Respect\Validation domain validátorát integráltam, ami alapesetben jól is működik.
A példa.hu punycode változatát (xn--plda-bpa.hu) jól validálja viszont a subdomaineket már nem. A mail.xn--plda-bpa.hu a validátor szerint már nem érvényes.
A hiba forrását már megtaláltam, és akár javítható is, viszont ez most egy ágyúval verébre kategória, mivel a domain validáción kívül mást nem használok belőle.
Próbáltam keresni a Packagisten és a Google-ön is, de eddig eredménytelenül.
Tudtok valamilyen egyszerű domain validátort, ami minden RFC szabályt betart, és boldogul a nemzetközi domainekkel?
A probléma forrása az, hogy a validátor csak a domain legelején figyeli az xn-- karektersorozatot:Köszönettel,
vrnagy
■ Egy Symfony2 projekthez szükségem van domain validációra, viszont problémába ütköztem a nemzetközi domainekkel.
Jelenleg a Respect\Validation domain validátorát integráltam, ami alapesetben jól is működik.
A példa.hu punycode változatát (xn--plda-bpa.hu) jól validálja viszont a subdomaineket már nem. A mail.xn--plda-bpa.hu a validátor szerint már nem érvényes.
A hiba forrását már megtaláltam, és akár javítható is, viszont ez most egy ágyúval verébre kategória, mivel a domain validáción kívül mást nem használok belőle.
Próbáltam keresni a Packagisten és a Google-ön is, de eddig eredménytelenül.
Tudtok valamilyen egyszerű domain validátort, ami minden RFC szabályt betart, és boldogul a nemzetközi domainekkel?
A probléma forrása az, hogy a validátor csak a domain legelején figyeli az xn-- karektersorozatot:
$this->checks[] = new OneOf(new Not(new Contains('--')),
new AllOf(new StartsWith('xn--'),
new Callback(function ($str) {
return substr_count($str, "--") == 1;
})));
vrnagy
Nekem ez regexpért kiált.
Én is erre gondoltam, egy
A regex darabonként vizsgálja a domaint, egy darab az első .-ig tart (mail.example.com-ból mail. és example. lesz)
Az első, és pont előtti utolsó karakter csak alfanumerikus lehet.
A köztes rész tartalmazhat kötőjelet.
A végén kötelezően egy TLD van, amit később az ICANN hivatalos listájából nyerek ki.
Ez jelenleg így néz ki, csak hu és com TLD-vel:
Tehát hogy az ex--ample.com ne legyen valid, de az xn--plda-bpa.hu igen.
Ezt találtam
Köszi a linket. Én egy másik
A végső regexp: