En estos casos tenes 2 opciones, Expresiones regulares o una clase de parseo HTML. La clase de parseo HTML por excelencia es QueryPath (
http://querypath.org/), pero para este caso es demaciado asi que recomiendo expresiones regulares.
preg_match_all("/href=\"(.*?)\"/is", $html, $links);
Nos pone en links un arreglo de todos los enlaces de la web. Mejorando un poco.
function get_links($html) {
preg_match_all("/href=\"(.*?)\"/is", $html, $links);
return isset($links[1]) ? $links[1] : array();
}
Un poco más fino seria:
function get_links($html) {
preg_match_all("/href=\"(.*?)\"/is", $html, $links);
return isset($links[1]) ? $links[1] : array();
}
function is_http($link) {
return preg_match('/^http(s)?:\/\/(.*)$/', $link, $rst) > 0;
}
var_dump(array_filter(get_links($html), 'is_http'));Otra aproximación:
function not_end_slash($link) {
return substr($link, -1) != '/';
}
var_dump(array_filter(array_filter(get_links($html), 'is_http'), 'not_end_slash'));
Ahora nos deshacemos de los que no tienen de dominio "file.karelia.ru":
function get_links($html) {
preg_match_all("/href=\"(.*?)\"/is", $html, $links);
return isset($links[1]) ? $links[1] : array();
}
function is_http($link) {
return preg_match('/^http(s)?:\/\/(.*)file\.karelia\.ru(.*)$/', $link, $rst) > 0;
}
var_dump(array_filter(get_links($html), 'is_http'));