ho creato questa classe in php...
è uno spider per siti internet...
ho un problema però:
nella parte dove c'è la ricorsiva($this->Indexing) nlla funzione indexing...
in quel punto non funziona niente...
che devo fare???
provatela:
Codice PHP:
<?php
session_start
();
class 
Search
{
    private 
$original_url;
    var 
$max 10;
    
    function 
Search($url$mode){
        
$this->original_url $url;
        if(
$mode == 'indexing'){
            
$arg func_get_args();
            
$index_tag array_key_exists(3$arg) && is_array($arg[3]) ? func_get_arg(3) : array('<a.*?href="(.*?)"''<h1.*?>(.*?)<\/h1>''<h2.*?>(.*?)<\/h2>''<h3.*?>(.*?)<\/h3>''<span.*?>(.*?)<\/span>');
            
$this->Indexing($url$index_tag);
        }
    }
    
    function 
Indexing($url$index_tag$rec false){
        
$handler = @fopen($url'r'); #inizializzo il buffer
        
if($handler){
            while(
$buffer fgets($handler4096)){
                !isset(
$file) ? $file $buffer $file .= $buffer;
                
#riunisco tutte le righe
            
}
        } else {
            
trigger_error('errore nella lettura del file'E_USER_ERROR);
            
#se l'handler non è partito: errore
        
}
        
$file preg_replace('/.*?<--\/notindex-->/is',''$file);
        
#non leggo i tag tra i delimitatori...
        
foreach($index_tag as $tag){
            
#ciclo sui tag
            
if(preg_match_all('/'.$tag.'/is'$file$index)){
                
$spider[$url][$tag] = $index;
                
#emetto il codice ricercato
            
}
        }
        !isset(
$_SESSION['tot']) ? $_SESSION['tot'] = null;
        
#se la sessione tot non è settata la setto altrimenti null
        
$eq $rec === false false $this->original_url != $url true false;
        
#se $rec è identico a false emmetto true altrimenti se $this->orginal_url è diverso da $url emetto true altrimenti false
        
if(isset($spider[$url]['<a.*?href="(.*?)"'])&&is_array($spider[$url]['<a.*?href="(.*?)"'])&&$eq&&$_SESSION['tot'] <= $this->max){
            
#se $spider[$url]['<a.*?href="(.*?)"'] è fissata e $spider[$url]['<a.*?href="(.*?)"'] è un array e $eq è uguale a true e $_SESSION['tot'] è minore o uguale a $this->max
            
$i 1;
            
$_SESSION['visited'][0] = true;
            foreach(
$spider[$url]['<a.*?href="(.*?)"'][1] as $key => $url_recursive){
                if(
preg_match('/http:\/\/.*?/is'$url_recursive)&&!array_key_exists($url_recursive$_SESSION['visited'])){
                    
$time[$i++] = $this->Indexing($url_recursive$index_tagtrue);
                    
$_SESSION['visited'][$url_recursive] = 0;
                    
$_SESSION['tot']++;
                }
            }
        }
        if(!
$rec){
            
$time[0] = $spider;
        }
        
print_r($time);
    }
}
$ind = new Search('http://localhost:85/php3/index.php','indexing');
?>