Имеется большое количество емайл баз, в текстовых документах. Некоторые имеют формат вида: emailass (у некоторых вместо двоеточие стоит точка с запятой) Некоторые просто: email Нужно выдрать адреса определенного домена. Что бы в итоге вышло вида: [email protected] Подскажите софтину, буду благодарен до старости!
Сначала так, затем http://forum.antichat.ru/thread121052.html Либо http://forum.antichat.ru/threadnav167280-1-10.html
PHP: <?php $text =file_get_contents('my.txt'); preg_match_all('/[\.\-_A-Za-z0-9]+?@(list|mail|inbox|bk).ru\:(.*)/', $text, $out); // здесь будут майловские поддомены выдираться, если не майл то как подкорректировать- думаю поймеш $arr = $out[0]; $result = array_unique($arr); foreach($result as $value) { echo "$value <br />"; } ?> P.S. в регулярке после @ ставь поддомен который тебе нужен в каменте я написал что скрипт настроен на майл, ну а тебе примерно так PHP: preg_match_all('/[\.\-_A-Za-z0-9][email protected]\:(.*)/', $text, $out);
Если нужно пройтись по всем базам: PHP: <?php set_time_limit(0); $dir = "C:\WebServers\home\localhost\www\emailsDirectory"; // путь до директории с базой мэйлов if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ($file !== '.' AND $file !== '..') { $current_file = "{$dir}\\{$file}"; if (is_file($current_file)) { $file = file_get_contents($current_file); preg_match_all('/[\.\-_A-Za-z0-9][email protected]/', $file, $out); foreach ($out[0] as $line) { $fp = fopen("result.txt", "a"); //полученные мейлы будут в result.txt fwrite($fp, $line."\n"); fclose($fp); } } } } } ?>
Не получается. Горе с пополам объединил все текстовики в один, с помощью коллектора, в итоге весит 700 метров, и в начале может я не правильно выразился, нужно получить майлы определенного домена, например .ru Запускаю скрипт, выходит ошибка, мол не смог открыть: Warning: file_get_contents(my.txt) [function.file-get-contents]: failed to open stream: No such file or directory in Z:\home\localhost\www\index.php on line 3 Из соседней темы пробовал вставлять в скрипт, но ни чего не получается.
Немного скорректировал скрипт Skofield"а но выходит ошибка: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 742477144 bytes) in Z:\home\localhost\www\index.php on line 13
Kusto же написал что, должно быть в my.txt т.е. в одном текстовике все Щас из двух выше написанных скриптов собрал один, текстовики сделал по 11 метров, вроде бы все заработало. PHP: <?php set_time_limit(0); $dir = "C:\WebServers\home\localhost\www\emailsDirectory"; // путь до директории с базой мэйлов if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ($file !== '.' AND $file !== '..') { $current_file = "{$dir}\\{$file}"; if (is_file($current_file)) { $file = file_get_contents($current_file); preg_match_all('/[\.\-_A-Za-z0-9]+?@(.*)\.cz/', $file, $out); foreach ($out[0] as $line) { $fp = fopen("result.txt", "a"); //полученные мейлы будут в result.txt fwrite($fp, $line."\n"); fclose($fp); } } } } } ?>
Зачем ты объединил все файлы в один? Я ведь написал скрипт, который проходит по всем файлам в определенной папке.