Ma all'inizio non andava? Le primissime prove che abbiamo fatto.
No con il sito Rai.it non abbiamo mai provato. Non va comunque :| e non so il perchè
EDIT: dopo tanto impazzire forse ho trovato una soluzione
Ultima modifica:
Ma all'inizio non andava? Le primissime prove che abbiamo fatto.
Posta posta.
<?php
$uri = 'http://www.laguidatv.it/';
$get = file_get_contents($uri);
//costruisco una posizione iniziale
$inizio = strpos($get, '<');
// comincio il ciclo
for($i=0; $i<250; $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 = "<br />" . $canale . " " . $trasmissione;
//stampo
echo $riga;
}
?>
$riga = "<br />" . $canale . " " . $trasmissione;
Non c'è bisogno che siano racchiusi in dei tag.
Per esempio se prima di ogni ora c'è scritto:
Ora inizio : 20.00
Allora cerca Ora inizio così come ora cerchi i tag.
Si lo so ma se dai un occhio alla pagina comprendi perchè non riesco a prenderli: prima non c'è scritto nulla. Se mi fai la cortesia di dare un occhio magari puoi aiutarmi =)
Intato hai un tag </br> prima di ogni orario di inizio tranne il primo.
In più non vedo un orario di fine del programma nella pagina che hai postato.
Per l'ordinamento: come vuoi ordinare?
<?php
$uri = 'http://www.laguidatv.it/';
$get = file_get_contents($uri);
//costruisco una posizione iniziale
$inizio = strpos($get, '<');
// comincio il ciclo
for($i=0; $i<1; $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);
$canale = substr($get,$canale_inizio,$canale_fine-$canale_inizio+4);
//grab della durata del programma
$durata_inizio = strpos($get, '</a>', $canale_fine);
$durata_fine = strpos($get, '<br>', $durata_inizio);
//chiudo la prima posizione
$inizio = $durata_fine;
$durata = substr($get,$durata_inizio-4,$durata_fine-$durata_inizio-4);
$riga = "<br />" . $canale . " " . $trasmissione . " " . $durata;
//stampo
echo $riga;
}
?>
Per fare il riordinamento devi salvarti tutti i canali con gli orari e trasmissioni in un array di array per poi riordinarli.
<?php
$uri = 'http://www.laguidatv.it/';
$get = file_get_contents($uri);
//costruisco una posizione iniziale
$inizio = strpos($get, '<');
// comincio il ciclo
for($i=0; $i<250; $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);
$a_canale = array($canale);
$a_trasmissione = array($trasmissione);
$riga = "<br />" . $a_canale . " " . $a_trasmissione;
//stampo
echo $riga;
}
?>
Array Array
Array Array
Array Array
Array Array
Array Array
Array Array
Array Array
Array Array
Dovresti fare la stampa così:PHP:$riga = "<br />" . $a_canale[0] . " " . $a_trasmissione[0];
<?php
$uri = 'http://www.laguidatv.it/';
$get = file_get_contents($uri);
//costruisco una posizione iniziale
$inizio = strpos($get, '<');
// comincio il ciclo
for($i=0; $i<250; $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);
$a_canale = array($canale);
$a_trasmissione = array($trasmissione);
$riga = array( "<br />" . $a_canale[0] . " " . $a_trasmissione[0]);
sort($riga);
foreach($riga as $posizione => $nome){
echo "Posizione Canale[$posizione] : $nome <br/>";
}
}
?>
Posizione Canale[0] :
Rai News COLORI
1Posizione Canale[0] :
Milan Channel Milanello Live
1Posizione Canale[0] :
Sky Cinema Cult Cyrus
1Posizione Canale[0] :
echo count($riga);
Si ovvio..in quel modo prendi un canale in tutte le sue informazioni e lo metti in un array e in quell'array c'è solo quel canale e tu tenti di ordinare..(quando in realtà ce n'è solo uno).
Allora devi metterli prima tutti in un array di array e poi quando finisci di metterli (cioè fuori dal ciclo) ordini per poi stampare.
$riga = array( "<br />" . $a_canale[0] . " " . $a_trasmissione[0]);
$contatore = 0;
for(...){
//...
$riga=array($contatore => array("canale" => $canale, "trasmissione" => $trasmissione));
$contatore++;
//...
}
//ordinamento
//...
//stampa finale
for($i = 0; $i < $contatore; $i++)
echo $riga[$i]['canale']." ".$riga[$i]['trasmissione'];
Infatti c'è solo quella visto che scrivi sempre su quella. In realtà se stampi fuori c'è l'ultima perché si sovrascrive sempre sul primo elemento dell'array.
Dovresti fare qualcosa tipo:
Ordini come vuoi in base a quello che desideri. Ci sono molte guide e diversi procedimento da poter adottare per ordinare un array.PHP:$contatore = 0; for(...){ //... $riga=array($contatore => array("canale" => $canale, "trasmissione" => $trasmissione)); $contatore++; //... } //ordinamento //... //stampa finale for($i = 0; $i < $contatore; $i++) echo $riga[$i]['canale']." ".$riga[$i]['trasmissione'];
Va bene attendo aggiornamenti
<?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<250; $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);
$a_canale = array($canale);
$a_trasmissione = array($trasmissione);
$riga = array( "<br />" . $canale . " " . $trasmissione);
//$riga = array( "<br />" . $a_canale[0] . " " . $a_trasmissione[0]);
$riga=array($contatore => array("canale" => $canale, "trasmissione" => $trasmissione));
$contatore++;
}
//ordinamento
natsort($riga);
//stampa finale
for($k = 0; $k < $contatore; $k++){
echo $riga[$k]['canale']." ".$riga[$k]['trasmissione'];
}
?>
<?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<250; $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);
//$a_canale = array($canale);
//$a_trasmissione = array($trasmissione);
//$riga = array( "<br />" . $canale . " " . $trasmissione);
//$riga = array( "<br />" . $a_canale[0] . " " . $a_trasmissione[0]);
$riga=array($contatore => array("canale" => $canale, "trasmissione" => $trasmissione));
$contatore++;
}
//ordinamento
natsort($riga);
//stampa finale
for($i = 0; $i < $contatore; $i++){
echo $riga[$i]['canale']." ".$riga[$i]['trasmissione'];
}
?>