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($handler, 4096)){
!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'] = 0 : 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_tag, true);
$_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');
?>