Ver Mensaje Individual
  #16 (permalink)  
Antiguo 21/08/2011, 16:50
Avatar de andresdzphp
andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: sacar el dominio principal del un link largo

Con la expresión regular que detecte las URL en la cadena más el comentario de @emprear se puede lograr sacar el dominio correctamente.

Código PHP:
Ver original
  1. function esip($ip_addr) {
  2.     //first of all the format of the ip address is matched
  3.     if (preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",
  4.     $ip_addr)) {
  5.         //now all the intger values are separated
  6.         $parts = explode(".", $ip_addr);
  7.         //now we need to check each part can range from 0-255
  8.         foreach ($parts as $ip_parts) {
  9.             if (intval($ip_parts) > 255 || intval($ip_parts) < 0)
  10.                 return FALSE; //if number is not within range of 0-255
  11.         }
  12.         return TRUE;
  13.     } else
  14.         return FALSE; //if format of ip address doesn't matches
  15. }
  16.  
  17. function domain($domainb) {
  18.     $bits = explode('/', $domainb);
  19.     if ($bits[0] == 'http:' || $bits[0] == 'https:') {
  20.         $domainb = $bits[2];
  21.     } else {
  22.         $domainb = $bits[0];
  23.     }
  24.     unset($bits);
  25.     $bits = explode('.', $domainb);
  26.     $idz = count($bits);
  27.     $idz -= 3;
  28.     if (strlen($bits[($idz + 2)]) == 2) {
  29.         $url = $bits[$idz] . '.' . $bits[($idz + 1)] . '.' . $bits[($idz + 2)];
  30.     } else if (strlen($bits[($idz + 2)]) == 0) {
  31.         $url = $bits[($idz)] . '.' . $bits[($idz + 1)];
  32.     } else {
  33.         $url = $bits[($idz + 1)] . '.' . $bits[($idz + 2)];
  34.     }
  35.     return $url;
  36. }
  37.  
  38. $cadena = 'Este es mi url http://lavidaesbella.site.com y blablabla.';
  39. preg_match('@(www\.|http://|([^\s]*\.[^\s]))([^\s|/]*)@i', $cadena, $m);
  40.  
  41. $address = $m[0];
  42. $parsed_url = parse_url($address);
  43. $check = @esip($parsed_url['host']);
  44. $host = @$parsed_url['host'];
  45. if ($check == FALSE) {
  46.     if ($host != "") {
  47.         $host = domain($host);
  48.     } else {
  49.         $host = domain($address);
  50.     }
  51. }
  52. echo $host;
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 21/08/2011 a las 17:03