<?php
/**
* @name Grab Emails From URL [GEFU]
* @version 1.0
* @author David Sopas Ferreira <coder at davidsopas dot com>
* @copyright 2008
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
class gefu
{
// Regular expression to get valid email formats
private $email_regex = "/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i";
// Regular expression to check vaid url format (credits to fqa)
private $url_regex = "^(https?|ftp)\:\/\/([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?\$";
// Writable path for storing the emails list text files
private $path = "logs/";
private $dados = "";
private $counter = 0;
// Main function to grab the emails from a given url
public function grab($url)
{
// Checks for a valid url format
if (eregi($this->url_regex, $url))
{
$website = @file_get_contents($url);
// $pathfile will have the following format emails20080808-142823.txt
$pathfile = "$this->path/emails" . date("Ymd-His") . ".txt";
$filename = fopen($pathfile, 'a+');
preg_match_all($this->email_regex, $website, $matches);
// Clears duplicate emails on the array
$matches = array_unique($matches[0]);
foreach ($matches as $key => &$value)
{
$this->dados .= $value . "\n";
$this->counter++;
}
// Stores all the emails in the file
fwrite($filename, $this->dados);
fclose($filename);
unset($value);
if ($this->counter > 0)
{
echo "{$this->counter} emails were found and stored in the text file.";
} else
{
echo "Couldn't find any emails on the {$url}.";
}
} else
{
echo "Provided {$url} has not a valid format.";
}
}
}
?>
|