Nessun consiglio?![]()
Così ad occhio, ma propio ad occhio il tuo problema è qui:
dovrebbe essereCodice PHP:for($i = 1;$i<$number_of_pages;$i++) {
Codice PHP:for($i = 1;$i<=$number_of_pages;$i++) {
Purtroppo il problema non è quello...lo script si "perde" per strada le altre pagine in mezzo...
con qualche miglioramento sul codice sono riuscito a fargli salvare anche qualche immagine delle pagine precedenti, ma comunque si perde ancora molti pezzi per strada![]()
Secondo me devi pensare di fermarti e riprogettare.
Usare il concetto divide et impera e costruire un giusto set di funzioni.
una funzione ad esempio per estrarre le sottostringhe contenute tra due elementi.
una funzione per estrarre un collegamento da un attributo
una funzione per ottenere gli offset e le occorrenze di una sottostringa
etc...
quando ti sei fatto questo set di funzioni allora puoi inziare a gestire il tutto.
quindi in primis apri l'url inziale, poi estrai tutti i collegamenti e li salvi in opportuna struttura dati.
quindi avvi l'estrazione dei percorsi delle immagini e li salvi.
a questo punto avvii il download delle immagini
quando hai finito ripeti la procedura per ogni link che trovi markando opportunamente quelli gia' visitati (eviti i loop infinit) ... facendo cosi' hai 1 procedura migliore e ppiu' facile da gestire.
Np facci sapere come va![]()
una buona tecnica per identificare le sottostringhe(anche epr un discorso di performance) e' usare regular expressions con i relativi caratteri di controllo \b che servono a segnare il limite
ad esempio
Codice PHP:
$str = '</div>
<div id="servizi">
<ul>[*][url="http://crea.html.it"]Crea[/url][*][url="http://font.html.it"]Font.it[/url][*][url="http://www.freehtml.it"]Free Internet[/url][*][url="http://gifanimate.html.it"]GIFanimate.it[/url][*][url="http://www.newsletter.it"]Newsletter.it[/url][*][url="http://shop.html.it"]Shop[/url][*][url="http://webtool.html.it"]Webtool Free[/url]
[/list]
</div>';
$pattern = '/<a\\b (.*?)<\\/a>/' ;
$arr = array() ;
$ris = preg_match_all( $pattern , $str , $arr , PREG_OFFSET_CAPTURE ) ;
echo $ris."<hr><pre>" ;
var_dump($arr) ;
foreach( $arr as $a=>$v )
{
echo htmlentities($v);
echo "<hr>" ;
}
Ovviamente c'è dell'altro. Il problema da te esposto inizialmente diceva che perdevi solo l'ultimo elemento ma a quanto pare perdi molto di più.Originariamente inviato da DKiller92
Purtroppo il problema non è quello...lo script si "perde" per strada le altre pagine in mezzo...
con qualche miglioramento sul codice sono riuscito a fargli salvare anche qualche immagine delle pagine precedenti, ma comunque si perde ancora molti pezzi per strada![]()
Ridarò un occhio al codice e cercherò di capire se c'è dell'altro.
A questo punto mi sa che gli conviene riaprtire applicando una struttura migliore al codice.
Impostando le funzioni per estrarre i dati e quelle per gestirli e quindi usarle nel "main"![]()