PHP Alterar Lista Emails no Arquivo TXT
O PHP abaixo já funciona mas preciso automatizá-lo.
Da forma que está ele procura por determinada palavra, cria um arquivo e move todas as palavras encontradas em todos os arquivos da pasta para um único arquivo.
Agradeço por qualquer alteração ou melhoria nele.
Retirar a opção de apenas arquivos TXT e deixar ler qualquer arquivo
$files = glob($base.'*.txt'); // Pega todos os arquivos que terminam com .txt
Preciso que ele trabalhe de forma automática e fazendo o seguinte:
1) Opção de escolher pasta ORIGEM
2) opção de escolher pasta DESTINO
Na pasta ORIGEM:
3) Abrir o primeiro arquivo TXT (que tem um email por linha+Enter)
4) Ver qual servidor do primeiro email - exemplo: @teste.com.br
5) Criar um arquivo chamado "teste.com.br" na pasta DESTINO
6) Mover todos os emails @teste.com.br deste arquivo origem para o arquivo destino
7) Salvar o arquivo aberto e recomeçar a partir da opção 3.
Como são vários arquivos e alguns com 300Mb então precisa fazer LOOP do 3 ao 7 para economizar memória e o computador conseguir realizar a tarefa.
$base = DIR.DIRECTORY_SEPARATOR; // Diretório onde estão os arquivos txt.
$files = glob($base.'*.txt'); // Pega todos os arquivos que terminam com .txt
$search = 'silva'; // a palavra que deseja buscar
$found = array();
$arr = array();// Itera os arquivos encontrados
foreach ($files as $file) {
// Lê cada arquivo em um array
$arr = file($file);
foreach ($arr as $k => $v) {// Se encontrar a palavra, guarda no array $found e remove do array que leu o arquivo.
if (stripos($v, $search) !== false) {
$found[] = trim($arr[$k]);
unset($arr[$k]);
}
}// Salva os dados no arquivo, com os nomes removidos
if (!empty($found)) {
file_put_contents($file, implode('', $arr));
}
}// salva todos os nomes encontrados
if (!empty($found)) {
file_put_contents($base.'silva.txt', implode(PHP_EOL, $found));
}
unset($found, $arr);Discussão (1)
Carregando comentários...