• User Attivo

    [PHP] Problema con questo piccolo script

    Ho un problema con questo script (che non ho fatto io ma mi sono trovato): in poche parole, dovrebbe tirare fuori una frase presa da un file txt e con l'andare dei giorni incrementare di 1 e prendere la frase successiva.

    Lo script è questo:

    [PHP]<?php $file = "parola_giorno/file.txt"; $contatore = 1; $oggi = date("d-m-Y"); //echo $oggi; $f = fopen($file, "r"); while ( $line = fgets($f, 1000) ) { //print $line; $contenuto = $line; if(ereg("<data>",$contenuto)){ $data = strstr($contenuto, "<data>"); $data = substr($data, 6, 10); $data = strip_tags($data); $stampa = strstr($contenuto, "<frase>"); $stampa = trim($stampa); $stampa = strip_tags($stampa); $stampa = htmlentities($stampa); //echo " $contatore - $data - $stampa <br>--------------<br>\n"; $parola[$data] = $stampa; $contatore++; } } //print_r($parola); $rand_keys = array_rand($parola, 1); if(array_key_exists($oggi, $parola)){ echo '<i>'.$parola[$oggi].'</i>'; }else{ $ultimo = array_pop(array_keys($parola)); //echo "+$ultimo+"; echo '<i>'.$parola[$ultimo].'</i>'; } ?>[/PHP]

    Mentre la sintassi del file txt è la seguente:

    <data>20-10-2012</data><frase>Lo spirito della verità darà testimonianza di me, dice il Signore e anche voi date testimonianza.</frase>
    

    (non fate troppo caso al contenuto, è il sito di una comunità di suore).

    Praticamente mi viene fuori sempre l'ultima riga del codice invece che prendere quella con la data giusta. Aggiungo inoltre che lo script è inserito nella sidebar di un blog wordpress.

    A voi


  • User

    Non è molto chiaro lo scopo preciso dello script.
    Quale output deve restituire esattamente? Trovandosi su una sidebar di wordpress, avrebbe senso se, tecnicamente, lo script dovesse restituire l'output relativo al giorno $oggi.

    "con l'andare dei giorni incrementare di 1 e prendere la frase successiva".

    Scusa ma non è molto chiaro, spero di aver interpretato bene: da quel che ho capito lo script dovrebbe restituire l'output relativo a $oggi oppure l'ultimo elemento riscontrato.

    se è così ecco lo script:

    
    <?php   
    
    $file = "file.txt";    
    $contatore = 1;   
    $oggi = date("d-m-Y"); 
    //echo "$oggi<br>";   
    $f = fopen($file, "r"); 
    
    	while ( $line = fgets($f, 1000) ) {  
    	//print $line;    
    	$contenuto = $line;        
    		if(preg_match("<data>",$contenuto)){           
    			$data = strstr($contenuto, "<data>");     
    			$data = substr($data, 6, 10);     
    			$data = strip_tags($data);      
    			$stampa = strstr($contenuto, "<frase>");     
    			$stampa = trim($stampa);     
    			$stampa = strip_tags($stampa);   
    			//$stampa = htmlentities($stampa);         
    			
    			//echo " $contatore - $data - $stampa <br>--------------<br>\n";     
    			$parola[$data] = $stampa;      
    			$contatore++;      
    		}     
    	}    
    	//print_r($parola);      
    	$rand_keys = array_rand($parola, 1);   
    	if(array_key_exists($oggi, $parola)){  
    	echo '<i>'.$parola[$oggi].'</i>';  
    	}else{  
    	$ultimo = end($parola);  
    	//echo "+$ultimo+";  
    	echo '<i>'.$ultimo.'</i>';  }          
    ?>
    
    

  • User Attivo

    Allora, evento che non mi spiego: lo script che non ha funzionato per almeno una settimana buona da quando ho aggiornato il file che conteneva la frase da aggiornare ogni giorno, stamani è funzionante! O__O

    Per rispondere a giangel, loro hanno una sidebar dove visualizzano ogni giorno una frase inerente il periodo, quindi ad esempio avvento, natale, quaresima e via dicendo, e queste frasi vengono estratte di volta in volta da questo file di testo e mostrate nel riquadro sotto all'immagine.

    Ora io non so come mai sia partito, a questo punto meglio così


  • User

    meglio così 🙂