Api Xml

Puoi dirmi cosa restituisce a video il var_dump?
Magari metti 5 al posto di 250 per fare questa prova.
 
Puoi dirmi cosa restituisce a video il var_dump?
Magari metti 5 al posto di 250 per fare questa prova.

HTML:
array(1) { [0]=> array(2) { ["canale"]=> string(19) "Russia Today" ["trasmissione"]=> string(43) "Cross Talk" } } array(1) { [1]=> array(2) { ["canale"]=> string(19) "Primafila 15" ["trasmissione"]=> string(55) "Alle 16:30 Senza freni" } } array(1) { [2]=> array(2) { ["canale"]=> string(15) "Rai News" ["trasmissione"]=> string(38) "METEO" } } array(1) { [3]=> array(2) { ["canale"]=> string(18) "Planet Kids" ["trasmissione"]=> string(50) "Scuola di vampiri" } } array(1) { [4]=> array(2) { ["canale"]=> string(18) "Real Time+1" ["trasmissione"]=> string(52) "Guardaroba Perfetto" } } Real Time+1 Guardaroba Perfetto

Se premevi su "Ecco" vedevi il risultato. Era un link xDD
 
PHP:
$riga=array(0 => array("canale" => "canale", "trasmissione" => "trasmissione")); 
for(...){
//...
$riga[$contatore]['canale']=$canale;
$riga[$contatore]['trasmissione']=$trasmissione;
}
//ordinamento

for($i = 0; $i < $contatore; $i++){ 
   echo $riga[$i]['canale']." ".$riga[$i]['trasmissione'];   
}
Prova una cosa del genere e togli questo:
PHP:
    $riga=array($contatore => array("canale" => $canale, "trasmissione" => $trasmissione));
Se non funziona testo io domani al pc.
 
Funziona ho aggiunto sort($riga); per l'ordine numerico. Vorrei però chiederti alcune cose.

In primis mi piacerebbe se mi spiegassi passo passo il codice da te postato. Il perché tu abbia messo $riga fuori e il modo in cui hai contato con $contatore++
Purtroppo non mi accontento che le cose funzionino mi piacerebbe capirle, trovo veramente inutile e sterile scopiazzare codice di altri senza almeno capirlo, per piacere istruiscimi T.T :crying:


Il codice funziona, tuttavia (so che sono rompipalle) ho notato una cosa: se faccio il de-bug di
PHP:
var_dump($riga);
noto che ogni canale viene duplicato.

Ora ti faccio capire meglio:

Il codice php per i primi 2 canali è questo:
PHP:
<?php      
$uri = 'http://www.laguidatv.it/';      

$get = file_get_contents($uri);

$contatore = 0; 

//costruisco una posizione iniziale  
$inizio = strpos($get, '<');  

$riga=array(0 => array("canale" => "canale", "trasmissione" => "trasmissione")); 

// comincio il ciclo  
for($i=0; $i<2; $i++){  

    //grab del programma televisivo  
    $prog_inizio = strpos($get, '<span class="search_text">', $inizio);    
    $prog_fine = strpos($get, '</span>', $prog_inizio);     

    $trasmissione = substr($get,$prog_inizio,$prog_fine-$prog_inizio+7);     

    //grab del canale che trasmette il programma  
    $canale_inizio = strpos($get, '<i>', $prog_inizio);   
    $canale_fine = strpos($get, '</i>', $canale_inizio);       

    //chiudo la prima posizione  
    $inizio = $canale_fine;   
    $canale = substr($get,$canale_inizio,$canale_fine-$canale_inizio+4);     
 
	$riga[$contatore]['canale']=$canale;
	$riga[$contatore]['trasmissione']=$trasmissione;
	
	$contatore++;
	
	var_dump($riga);
}

sort($riga);

//ordinamento
for($i = 0; $i < $contatore; $i++){ 
   echo "<br />" . $riga[$i]['canale'] . " " . $riga[$i]['trasmissione'];   
} 

?>

L'ordine alfabetico è rispettato solo che non capisco perchè ci sono delle ripetizioni:

HTML:
array(1) {
[0]=> array(2) { ["canale"]=> string(15) "Rai News" ["trasmissione"]=> string(43) "L'ECONOMIA" } 
} 

array(2) {
	[0]=> array(2) { 
		 ["canale"]=> string(15) "Rai News" ["trasmissione"]=> string(43) "L'ECONOMIA" 
		} 
	[1]=> array(2) { 
		 ["canale"]=> string(19) "Primafila 10" ["trasmissione"]=> string(63) "Alle 18:00 Viaggio in paradiso" 
		} 
} 

Primafila 10 Alle 18:00 Viaggio in paradiso
Rai News L'ECONOMIA

Rai News si ripete 2 volte why? Forse è perchè non ho capito il funzionamento del codice?
 
Veramente solo il primo dovrebbe ripetersi due volte con quel codice.
Dovresti aspettare domani perché lo testi meglio.

Edit: a titolo informativo: quello è ciò che stampa il var_dump.
Il for di stampa, da a video la stessa cosa?
 
Ultima modifica:
Veramente solo il primo dovrebbe ripetersi due volte con quel codice.
Dovresti aspettare domani perché lo testi meglio.

Ovviamente non c'è fretta :) è lapalissiano intuire che non mi devi nulla quindi ovviamente se e quando puoi mi darai spiegazioni e testerai il codice xD :beer:
 
Avevo fatto un edit. Puoi leggere? È stato pubblicato 1 min dopo il tuo commento
 
Avevo fatto un edit. Puoi leggere? È stato pubblicato 1 min dopo il tuo commento

Si scusa :D No a video va tutto come dovrebbe andare. Per questo ti avevo scritto che molto probabilmente non avevo capito il codice. Se puoi domani me lo spieghi?
 
Sisi va bene.

Ciao prima delle spiegazioni volevo chiederti un'ulteriore cosa:

E' possibile escludere i tag html che circondano le informazioni che mi servono?
Cioè:
PHP:
    //grab del programma televisivo  
    $prog_inizio = strpos($get, '<span class="search_text">', $inizio);    
    $prog_fine = strpos($get, '</span>', $prog_inizio);     

    $trasmissione = substr($get,$prog_inizio,$prog_fine-$prog_inizio+7);
Vorrei che i tag <span class="search_text"> e </span> non siano considerati.

per eliminare </span> mi è bastato rimuovere il +7 il problema è che non riesco ad eliminare <span class="search_text"> sai aiutarmi ancora? :P
 
Basta aggiungere il numero di caratteri:
PHP:
    $trasmissione = substr($get,$prog_inizio+26,$prog_fine-$prog_inizio);
 
Basta aggiungere il numero di caratteri:
PHP:
    $trasmissione = substr($get,$prog_inizio+26,$prog_fine-$prog_inizio);

dho! mettevo -26 ecco perchè :P Attendo la spiegazione del codice a codesto punto xD :mavieni:

Ps: buon carnevale gnam gnam lasagna :O_
 
Ultima modifica:
Ho testato il codice.
Ripeteva la prima riga 2 volte perchè lo avevi messo dentro al ciclo il var_dump().
Poi bisogna mettere +26 e -26 (+3 e -3) per eliminare i tag.
Non c'è bisogno di dichiarare il vettore fuori ma puoi inserire i valori direttamente nel ciclo come ho fatto io nel codice seguente.
PHP:
 <?php      
$uri = 'http://www.laguidatv.it/';      

$get = file_get_contents($uri);

$contatore = 0; 

//costruisco una posizione iniziale  
$inizio = strpos($get, '<');  

// comincio il ciclo  
for($i=0; $i<3; $i++){  

    //grab del programma televisivo  
    $prog_inizio = strpos($get, '<span class="search_text">', $inizio);    
    $prog_fine = strpos($get, '</span>', $prog_inizio);     

    $trasmissione = substr($get,$prog_inizio+26,$prog_fine-$prog_inizio-26);     

    //grab del canale che trasmette il programma  
    $canale_inizio = strpos($get, '<i>', $prog_inizio);   
    $canale_fine = strpos($get, '</i>', $canale_inizio);       

    //chiudo la prima posizione  
    $inizio = $canale_fine;   
    $canale = substr($get,$canale_inizio+3,$canale_fine-$canale_inizio-3);     
 
    $riga[$contatore]['canale']=$canale;
    $riga[$contatore]['trasmissione']=$trasmissione;
    
    $contatore++;
    

}
var_dump($riga);
sort($riga);

//ordinamento
for($i = 0; $i < $contatore; $i++){ 
   echo "<br />" . $riga[$i]['canale'] . " " . $riga[$i]['trasmissione'];   
} 

?>

Se servono ulteriori spiegazioni chiedi pure.
Ovviamente alla fine c'è la stampa e non credo che necessiti alcuna spiegazione tantomeno l'ordinamento che credo abbia fatto tu o quantomeno lo utilizzi bene visto che ti ordina i canali.
 
Mi si offusca la vista a leggere ora per quanto sono stanco xD mi hanno fatto correre pe 30" + 1h e 20 di attrezzi :V sto morendo, credimi che domattina sicuramente avrò bisogno di chiarimenti (non sulla stampa e non sull'ordinamento =) )

Ho provato il codice ma c'è qualcosa che non va, all'improvviso mostra tantissimi link. Prova a estendere il codice a 236 che dovrebbe essere il numero dei canali
 
Ultima modifica:
La cosa strana è che all'apparenza la cosa è randomica. Il canale che ha quest errore ha sempre prima questo simbolo 7]>

Edit: adesso l'errore è sparito.. che il webmaster stia modificando qualcosa?

EDIT2: si il problema è del sito :P
 
Ultima modifica:
Quindi funziona o no? A me andava bene quando l'ho provato.

Si si fanciullo funziona bene, ovviamente se il webmaster del sito apporta modifiche penso che sia normale che sballi un pochino. Sai percaso come posso fare per far si che l'output della pagina sia in csv? magari se hai qualche guida sarebbe il massimo... :cool:

Poi vorrei chiederti qualche spiegazione se non ti secca:

1.
PHP:
$inizio = strpos($get, '<');
qui perchè hai di nuovo richiamato il contenuto della pagina con $get?

2.
Potresti spiegarmi la sintassi di queste righe?

PHP:
    $riga[$contatore]['canale']=$canale; 
    $riga[$contatore]['trasmissione']=$trasmissione;

EDIT: googlando l'unico tutorial che mi è sembrato adattabile alla mia situazione è http://www.danieletabacco.com/19/articolo/esportare-con-php-dati-da-mysql-a-csv.html

Che ne pensi è fattibile stampare tutte le celle della tabella in un csv?
 
Ultima modifica:
Si ma a che ti serve metterle in un csv? Cambiano ogni minuto i programmi quindi non vedo l'utilità.
Per quanto riguarda i punti da spiegare (premetto non sono abile a spiegare):
1) mi prendo la posizione iniziale del documento che vista così non servirebbe ma siccome nel ciclo serve la posizione a cui è arrivato il ciclo precedente per poter continuare alla fine allora devo ogni volta ripartire dalla posizione $inizio che, una volta che abbiamo prelevato quello che ci serve, lo metto al punto di fine grazie alla riga:
PHP:
$inizio = $canale_fine;
2) $riga è un array di 2 elementi per ogni posizione e così lo sto popolando con tutti i valori di canale e trasmissione (che sono i due elementi).
 

Discussioni simili