Salve a tutti. Sto facendo un semplice crawler in php e ho un piccolo problema. I link che trovo vengono inseriti in coda ad un vettore mentre il link appena visitato viene rimosso dallo stesso. Ho però un errore di cui non capisco il motivo: quando faccio $queue = array_shift($coda), la $coda viene vista come stringa e non come vettore, quindi tutte le iterazioni successive, ovviamente, non funzionano. Ecco il codice
codice:
<?php
 // prendo una pagina seme e ne trovo i link. A questo punto prendo tali link e li uso come pagine seme.  
function LeggiUrls($url,$coda) { 		
         $file = 'link.txt'; 	    
         $html = file_get_contents($url); 		
         file_put_contents($file,"".PHP_EOL."pagina analizzata: ".$url.PHP_EOL.PHP_EOL, FILE_APPEND); 		 		
//guardo se riesce a visitarla, praticamente guardo se la pagina esiste davvero osservando se testo è vuoto	 			
           if(!$html)     		{ 				
               echo"Connessione fallita!"; 
} 	 			 
           else{ 	    	 			
            //tengo solo i tag a 			
            $testopulito = strip_tags($html, "<a>");  	      
  //questa è un'espressione regolare che mi salva i link nella variabile matches 	                
          preg_match_all( '/<a.+?href="(http:\/\/www.[^0-9].+?)"/', $testopulito, $matches); 	  	        
 // Ciclo tutti i risultati li aggiungo in fondo alla coda e li stampo sul file

       foreach($matches[1] as $link){
             array_push($coda,$link); 				 
             file_put_contents($file, $link.PHP_EOL, FILE_APPEND); 	                
} 	           
 } 		
//rimuovo il primo elemento della coda, ossia l'url che è stata appena analizzata  
     $queue = array_shift($coda); 		
Iteratore($queue);} 			
   function Iteratore($coda){ 	
// Ciclo e recupero tutte le pagine nella coda fino a quando ci sono elementi 


while(count($coda)>0) { 	    
  LeggiUrls($coda[0],$coda); } 
} 	
file_put_contents("link.txt", ''); //svuoto il file 	
// Inizializzo la coda che contiene gli url. 	
$coda = array("http://espresso.repubblica.it/");   	
$seme= $coda[0]; 	
LeggiUrls($seme,$coda); 	  	   	 
 ?>