Otro ejemplo. Este script busca enlaces en una web y descarga los que tengan una determinada extensión. Bueno para bajarse, por ejemplo, todas las imagenes de una web:
#!/usr/bin/php -q
<?php
error_reporting(E_NOTICE);
$extension = ".jpg";
$texto = file_get_contents("
http://www.google.com");
$texto = eregi_replace('"<a href="', '"<a href="', $texto);
preg_match_all('!<a href="(.+)"!U',$texto,$enlaces);
foreach($enlaces[1] as $enlace)
if((substr($enlace, -4) == $extension) && ($pos = strrpos($enlace, "/")))
{
$nombre = substr($enlace, $pos + 1, strlen($enlace) - $pos);
printf("Descargando $nombre ... ");
printf(copy($enlace, $nombre) ? "OK\n" : "FALLO\n");
}
?>
Ya sé que esto se puede hacer de mil maneras pero es una de las cosas que se pueden hacer.
Ya sé que esto se puede hacer de mil maneras pero es una de las cosas que se pueden hacer.
Muy interesante ese script...
aunque no bajaría los de enlazados por imágenes (aunque todo sería cosa de retocarlo un poco con el <img src="

) y además los enlaces que no empiecen por <a href=" (por ejemplo <a title="" href=" ) no los cogería...
A mí me gusta mucho esta expresión regular:
$ltrs = '\w';
$gunk = '/#~:.?+=&%@!\-';
$punc = '.:?\-';
$any = "$ltrs$gunk$punc";
preg_match_all("{
\b
http :
[$any] +?
(?=
[$punc] *
[^$any]
|
$
)
}x", $html, $enlaces);
Aunque tampoco es perfecta (los enlaces relativos que no llevan http:// ) pero combinando las dos quedaría perfecto
Por cierto, falta el "<?php", creo que se lo tragó