/**
* Created by PHPS.
* User: MADR
* Date: 07/10/2018
* Time: 11:24
*/
class FindshowController {
/**
* Path file per la ricerca
* @var string
*/
private $target='';
/**
* File da escludere
* @var string
*/
private $exl='';
/**
* Array contenente i percorsi statici dei file
* @var array
*/
private $static_searching=[];
/**
* Non utilizzata, servirebbe per il pagining
* @var int
*/
private $page_result=10;
/**
* La stringa viene espolosa e vengono processati tutti gli item
* @var string
*/
private $word_explode=' ';
/**
* Ritorno array associativo parloa cercata corrispondenza file
* @var array
*/
public $results=[];
/**
* Array appoggio
* @var array
*/
private $temp_local=[];
/**
* Array appoggio con contenuto file
* @var array
*/
private $temp_store=[];
public function __construct($options=[]) {
(!empty($options))?$this->set_all($options):null;
return $this;
}
public function __init_($word){
$this->start_searching();
$unique=[];
(!is_array($word))?$word_ar=explode($this->word_explode,$word):$word_ar=$word;
foreach ($this->temp_local as $items){
//salvo in temp store tutti gli item per evitare di effettuare l'operazione n volte quante le iterazioni
if(!isset($this->temp_store[$items]))$this->temp_store[$items]=file_get_contents($items);
$local=$this->temp_store[$items];
if($items!=$this->exl){
foreach ($word_ar as $k=>$words){
if(!empty(trim($words))){
if(strstr(strtolower($local),trim(strtolower($words)))){
if(!in_array($items,$unique)){
$this->results[trim(strtolower($words))][]=$items;
}
}
}
}
}
}
return $this;
}
private function set_all($option){
foreach ($option as $k=>$v){
(property_exists($this,$k))?$this->$k=$v:null;
}
}
public function start_searching(){
($this->target!='')?$this->load_path():$this->temp_local=$this->static_searching;
}
private function load_path(){
$a=scandir($this->target);
foreach ($a as $items){
if($items!='.' && $items!='..' && !is_dir($this->target.'/'.$items))$this->temp_local[]=$this->target.'\\'.$items;
}
$this->temp_local=array_unique(array_merge($this->temp_local,$this->static_searching));
}
}
//la puoi richiamare così
$find=new FindshowController(['target'=>__DIR__,'exl'=>__FILE__]);
/*init accetta sua una stringa che array... se stringa vengono valorizzate tutte le parole (anche parziali) per cercarle all'interno
dei file.
*/
print_r($find->__init_(['pluto','paperino','pippo'])->results);