Segue abaixo um exemplo comentado de como extrair e-mails de uma determinada página usando Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
Esta aí. Não é tão completo quanto as ferramentas profissionais, e nem vai seguindo os links das páginas (para isso, use ainda mais regexp). Apenas obtém e-mails em dado endereço.
É um exemplo que mostra que RegExp são sempre úteis.
Até mais!
Comentários no PHP:
Comentários no HTML:
Os comentários em HTML podem ser lidos pelo código-fonte no navegador, o que não ocorre com comentários em PHP.
Código PHP:
<?php ou <?
// isto é um comentário
/* isto também é um comentário */
# e isto é outro comentário
?>
Código HTML:
<!-- isto é um comentário -->
Código PHP:
<?php
header("Content-type: text/html; charset=UTF8"); // para evitar problemas de codificação e caracteres ilegíveis
$the_url = isset($_REQUEST['url']) ? htmlspecialchars($_REQUEST['url']) : null; // vamos iniciar tentando obter um endereço, se já foi obtido (caso contrário, teremos uma variável nula)
// agora vamos iniciar nossa página HTML e construir nosso formulário
// note que eu não respeito regra nenhuma de tableless
// afinal, não sou designer :D
?>
<!DOCTYPE html>
<html>
<head>
<title>E-mail extractor by 0KaL</title>
</head>
<body>
<!-- abaixo criamos o formulário com action no arquivo atual -->
<form method="post" action="<?php echo basename(__FILE__); ?>">
<table>
<tr>
<td>URL: </td>
<!-- e aqui imprimimos a URL (ou nada, se não houver nada digitado) -->
<td><input type="text" name="url" size="65" value="http://<?php echo str_replace("http://", "", $the_url); ?>"/></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Extrair e-mails" /></td>
</table>
</form>
<br>
<?php
// agora vem a parte divertida :)
if (isset($_REQUEST['url']) && !empty($_REQUEST['url'])) { // se o usuário já tiver digitado algum endereço
$text = file_get_contents($_REQUEST['url']); // vamos obter todo o conteúdo da página e jogar na variável $text
}
// agora vem a pior parte: RegExp :S
if (!empty($text)) { // se a página não estiver vazia
$res = preg_match_all(
"/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",
$text,
$matches
); // vamos obter todo o conteúdo que encaixa na nossa RegExp (e-mails)
if ($res) { // se houverem e-mails
foreach(array_unique($matches[0]) as $email) {
echo $email . "<br />\n"; //vamos exibí-lo e saltar uma linha
}
}
else { // mas se não houverem e-mails
echo "Nenhum e-mail encontrado!"; // ainda preciso comentar?
}
}
// agora vamos terminar o código HTML
?>
</body>
</html>
É um exemplo que mostra que RegExp são sempre úteis.
Até mais!