(PHP) Pegar todos links em file get contents
Pegar links de uma página utilizando php não é tão díficil quanto parece. Usando DOM em php facilita bastante coisas quando se trata de querer usar algumas funções do javascript no php.
O modo de execução é diferente, claro, mas as funçãoes de DOM tem exatamente as mesmas tarefas de javascript (pelo menos grande maioria delas)
Como por exemplo getElementByID
Enfim, aqui vai um código para pegar todos links de um web site. Isto mesmo, é bastante fácil, nada complicado e não necessita o uso de regex, como muitos pensavam:
// A variável URL armazena o site para listar os links
$url = "http://www.google.com.br";
// Chama a classe DOMDocument, responsável pela tarefa
$dom = new DOMDocument();
// LoadHTML pegará o código proveniente de file_get_contents
@$dom->loadHTML(file_get_contents($url));
// Declara $elementos com vlaor de todos elementos
// No caso apenas pega links contidos nas tags html/body
// Os elementos a serem pegos são os tags a
$elementos = new DOMXPath($dom)->evaluate("html/body//a");
// Inicia um laço for até que um último elemento seja passado
for ($i = 0; $i < $elementos->length; $i++)
{
// Declara $a como elemento passado atual
$a = $elementos->item($i);
// getAttribute pegará um atribute do elemento $a.
// No caso pode ser target, name, entre outros
// Veja mais sobre o elemento 'a' neste site abaixo
// http://www.w3schools.com/tags/tag_a.asp
$link = $a->getAttribute('href');
}
É isto. Leiam bem os comentários para poder compreender como utilizei a classe dom para pegar todos links de uma página. Espero que apreciem a função.
Abraço
error nesta linha
$elementos = new DOMXPath($dom)->evaluate("html/body//a");