Это код PHP
для получения обновленной вертикальной черты, разделенной UTF-8
Список TLD для непосредственного использования в регулярном выражении:
<?php
function getTLDs($separator){
$tlds=file('http://data.iana.org/TLD/tlds-alpha-by-domain.txt');
array_shift($tlds); // remove heading comment
usort($tlds,function($a,$b){ return strlen($b)-strlen($a); }); // sort from longest to shortest
return implode($separator,array_map(function($e){ return idn_to_utf8(trim(strtolower($e))); },$tlds));
}
echo getTLDs('|');
?>
Вы можете увидеть это в действии здесь .
Чтобы соответствовать имени хоста, вы можете использовать его так:
$tlds=getTLDs('|');
if (preg_match("{([\da-z\.-]+)\.($tlds)}u",$address)) {
..
}