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

Totalmente de acuerdo @masterpuppet, sólo hace falta una buena expresión regular que saque la URL de la cadena, porque tiene muchos requerimientos y yo no pude con todos. Cuando empiezan con www http:// muy fácil. Pero que hacer cuando la URL es por ejemplo:

Cita:
miweb.wordpress.com/2011/06/30/blablabla/
Confunde un poco el tema de esa URL y yo estoy apenas en pañales con expresiones regulares, aunque me defiendo un poco.

En todo caso ya se le dejó toda la información y ayudé a humanista lo más que pude.

Saludos.

Edit: Esto llevo hasta el momento y funciona, pero no le he hecho todas las pruebas. Si alguien quiere aportar algo para mejorar bienvenido sea.

Código PHP:
Ver original
  1. <?php
  2.  
  3. function sacarURL($str) {
  4.     if (preg_match('@(www\.|http://)[^\s|/]*|[a-z0-9]{3,}\.[a-z0-9]{3,}\.[a-z]{2,}@i', $str, $m)) {
  5.         /*Usada función de gustavo dot andriuolo
  6.         http://php.net/manual/es/function.parse-url.php*/
  7.         $bits = explode('/', $m[0]);
  8.         if ($bits[0] == 'http:' || $bits[0] == 'https:') {
  9.             $domainb = $bits[2];
  10.         } else {
  11.             $domainb = $bits[0];
  12.         }
  13.         unset($bits);
  14.         $bits = explode('.', $domainb);
  15.         $idz = count($bits);
  16.         $idz -= 3;
  17.         if (strlen($bits[($idz + 2)]) == 2) {
  18.             $url = $bits[$idz] . '.' . $bits[($idz + 1)] . '.' .
  19.              $bits[($idz + 2)];
  20.         } else if (strlen($bits[($idz + 2)]) == 0) {
  21.             $url = $bits[($idz)] . '.' . $bits[($idz + 1)];
  22.         } else {
  23.             $url = $bits[($idz + 1)] . '.' . $bits[($idz + 2)];
  24.         }
  25.        
  26.         return $url;
  27.    
  28.     } else {
  29.         return false;
  30.     }
  31. }
  32.  
  33. $cadena = "texto blablabla y texto miweb.wordpress.com/2011/06/30/blablabla/ y mas texto";
  34. echo sacarURL($cadena); //Resultado wordpress.com
__________________
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; 22/08/2011 a las 11:10