<?php
function searchLineByLine($file, $str){
if(!file_exists($file))
return false; // Si no existe el archivo, devolvemos falso
$handler = fopen($file, 'r'); // El handler del archivo en solo lectura
while(($line = fgets($handler)) !== false){ // Mientras existan nuevas líneas
if(strpos($line, $str)!==false){ // Comparador estricto, porque puede ser 0 si está al inicio de la líena
return true;
}
}
return false;
}
$Buscar = "TEXTO A BUSCAR";
$Match = []; // Array que contendrá los archivos que, valga al redundancia, contengan {$Buscar}
$Categories = new FilesystemIterator('/PATH/TO/CATEGORIES',FilesystemIterator::SKIP_DOTS); // Creamos un iterador
foreach($Categories as $singleCategory){ // Iteramos
if(!$singleCategory->isDir())
continue; // Si la categoría no es un directorio, ignoramos
$Articles = new FilesystemIterator($singleCategory->getPathname(),FilesystemIterator::SKIP_DOTS); // Iterador de artículos
foreach($Articles as $singleArticle){
if($Article->isDir())
continue; // Si es directorio, ignoramos el artículo
if(searchLineByLine($Article->getPathname(), $Buscar))
$Match[] = $Article->getPathname(); // Si encontramos coincidencia, lo agregamos a la lista de matches
}
}