Quando desenvolvemos sites ou aplicações baseadas em tecnologias Web, provavelmente precisaremos estabelecer conexões com outros sites ou aplicações disponíveis na Web. O problema é que conectar-se a servidores remotos nem sempre é algo fácil, devido as várias regras de segurança que o servidor impõe. Recentemente, precisei por vários motivos, de obter o título de uma página que fosse passada para mim, usando PHP ou Javascript. A solução apareceu com o PHP, usando a biblioteca cURL.
cURL é uma biblioteca que permite a conexão e troca de informações com servidores remotos de uma forma simples. Com o cURL, podemos fazer downloads ou uploads de ficheiros em servidores remotos, fazer login em sites que estão noutros servidores e ainda ter acesso á área de membros destes sites, enfim, as possibilidades são infinitas.
Como exemplo aqui, vou deixar a função que usei para estabelecer a conexão com o site que pretendia e ainda obter o título da página inicial.
function getTitle ( $url ) {
$site_url = $url;
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $site_url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
ob_start();
curl_exec($ch);
curl_close($ch);
$file_contents = ob_get_contents();
ob_end_clean();
if ( preg_match( '/<title>([^<]++)/', $file_contents, $matches ) == FALSE )
return FALSE;
return $matches[1];
}
Aqui, a url do site é passada no parámetro da função, e então usando funções do cURL, a função faz o download da página em questão. Como apenas faz o download do código HTML da página, ignorando elementos externos, o tempo de execução é mínimo. Defini um tempo de execução 5, mas podia colocar zero para não limitar o tempo de execução. Depois, usando expressões regulares, a função apenas obtem o valor definido entre as tags <title> e </title> , ignorando o resto.
Este é um exemplo básico do uso do cURL, que conseguiu resolver meus problemas. Para mais funções do cURL aconselho o uso do livro Webbots, Spiders, and Screen Scrapers: A Guide to Developing Internet Agents with PHP/CURL disponível na Amazon.








Comentários Recentes