Ver Mensaje Individual
  #3 (permalink)  
Antiguo 31/01/2011, 10:26
Avatar de TheRD
TheRD
 
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Filtrar urls de spam

Ya lo he solucionado. Por si a alguien le sirve:

Código PHP:
Ver original
  1. $u = 'cadena con urls';
  2. $domain = 'dominio.com';
  3. function filter_spam_urls($matches)
  4. {
  5.     if (!strrpos($matches[1], $domain))
  6.     {
  7.         $matches[1] = 'URL de SPAM bloqueada.';
  8.     }
  9.     return $matches[1];
  10. }
  11.  
  12.     $host = "([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]";  
  13.     $port = "(:\d{1,})?";  
  14.     $path = "(\/[^?<>\#\"\s]+)?";  
  15.     $query = "(\?[^<>\#\"\s]+)?";  
  16.  
  17.     $reg = "#(((www.|(ht|f)tps?:\/\/){$host}{$path}{$query})|{$host}{$path}{$query})#i";
  18.  
  19. echo preg_replace_callback($reg, 'filter_spam_urls', $u);

Las expresiones regulares son de http://craftyman.net/expresiones-reg.../#validar_link solo las modifiqué un poco para que no solo requiriese http sino que cogiese también sin http y con www. y sin ambos.

Saludos!