Hola,
Primero de todo, ¡muchas gracias por vuestra ayuda!
Creo que ya lo tengo todo... Mirad:
Primero, valido la entrada mediante la siguiente
regex:
^(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])){3}(:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[0-5]?([0-9]){0,3}[0-9]))?$)|(^(https?://)?(([0-9a-z_!~*'().&=+$%-]+:)?[0-9a-z_!~*'().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$)|(?:(?:ftp)://(?:(?:(?:(?:[a-zA-Z0-9\-_.!~*'();&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))(?::(?:(?:(?:[a-zA-Z0-9\-_.!~*'();&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)))?@)?(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0-9]*[a-zA-Z0-9]|[a-zA-Z])[.]?)|(?:[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+)))(?::(?:(?:[0-9]*)))?(?:/(?:(?:(?:(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)(?:/(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))*))(?:;type=(?:[AIai]))?))?)Entonces, obtengo el valor (que ya sé que es o una IP, o un HTTP o un HTTPS o un FTP o un dominio). Y para saber cual de ellos es, uso:
Using perl Syntax Highlighting
if ($contingut =~ $RE{net}{IPv4}{dec}) {
print("Es una IP\n");
} elsif ($contingut =~ $RE{URI}{HTTP}{-scheme => 'https?'}) {
print("Es http o https\n");
} elsif ($contingut =~ $RE{URI}{FTP}{-password}) {
print("Es un ftp\n");
} else {
print("Es un dominio\n");
}
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
¿Qué os parece?