Mr. BictorMan, eso sí que está claro !
Chécate esta función:
Código PHP:
//
function discriminador($dominio){
//definiendo conjuntos frecuentes
$usa = "a-z0-9"; //alfanuméricos
$lat = "a-z0-9áéíóúñü"; //latinos permitidos
//definiendo patrones
$patronACE = "^[$usa][$usa-]+[$usa]$";
$patronIDN = "^[$lat][$lat-]+[$lat]$";
//tomando decisiones
if( ereg($patronACE,$dominio) ) return "ACE";
elseif( ereg($patronIDN,$dominio) ) return "IDN";
else return "Error";
}//end function
EDITO:
Se me olvidó poner que ya la probé con tu lista:
Código PHP:
//
header("Content-Type: text/plain");
$cadena[] = "forosdelweb"; // -> ACE
$cadena[] = "2foros-del-web"; // -> ACE
$cadena[] = "-forosdelweb"; // -> Error (el - solo se acepta como separador)
$cadena[] = "dólares"; // -> IDN
$cadena[] = "españa"; // -> IDN
$cadena[] = "ñandú"; // -> IDN
$cadena[] = "ñan-dú"; // -> IDN
$cadena[] = "ñandú-"; // -> Error
$cadena[] = "agüero10"; // -> IDN
$cadena[] = "agüe_car"; // -> Error (el guión bajo no esta permitido)
$cadena[] = "domi?nio"; // -> Error
$cadena[] = "domi/nio"; // -> Error
$cadena[] = "dominio!"; // -> Error
$i = 0;
foreach($cadena as $dominio)
echo "\n".++$i.") ".$dominio.' -> '.discriminador($dominio);
y me imprime lo siguiente:
Código:
1) forosdelweb -> ACE
2) 2foros-del-web -> ACE
3) -forosdelweb -> Error
4) dólares -> IDN
5) españa -> IDN
6) ñandú -> IDN
7) ñan-dú -> IDN
8) ñandú- -> Error
9) agüero10 -> IDN
10) agüe_car -> Error
11) domi?nio -> Error
12) domi/nio -> Error
13) dominio! -> Error
Suerte !