Visualizzazione dei risultati da 1 a 7 su 7

Discussione: While -> explode

  1. #1

    While -> explode

    In un file scrivo delle informazioni, non so quante ne sono, ma so solo il massimo di quanto potrebbero essere. Devo fare delle scomposizioni del file, in modo da farle vedere ordinatamente.

    Facciamo finta che la variabile che legge tutto il file sia:
    Codice PHP:
    $lung_file122 "//-Data:".$data."-ora:".$ora."-Indirizzo IP:".$_SERVER['REMOTE_ADDR']."-//"."//-Data:".$data."-ora:".$ora."-Indirizzo IP:".$_SERVER['REMOTE_ADDR']."-//"."//-Data:".$data."-ora:".$ora."-Indirizzo IP:".$_SERVER['REMOTE_ADDR']."-//"."//-Data:".$data."-ora:".$ora."-Indirizzo IP:".$_SERVER['REMOTE_ADDR']."-//"
    avevo pensato ad un while in questo modo:

    Codice PHP:
             $lung_file1_ explode("//"$lung_file122);

         
    $mul 1;
         
        while (
    $mul <= 10) {
         
         
    $lung_file2_ explode("-"$lung_file1_[$mul]);
         
         echo 
    "
    "
    .$lung_file1_[$mul]."
    "
    ;
         echo 
    "
    "
    .$lung_file2_[$mul]."
    "
    ;
         
         echo 
    "$mul";
         
         
    $mul++;
        } 
    ma non stampa ordinatamente..

    io vorrei che stampasse tipo:

    codice:
    	n°1
    		Data: $data
    		Ora: $ora
    		Indirizzo ip: $indirizzo
    	
    	n°2
    		Data: $data
    		Ora: $ora
    		Indirizzo ip: $indirizzo
    	
    	n°3
    		Data: $data
    		Ora: $ora
    		Indirizzo ip: $indirizzo
    	
    	n°4
    		Data: $data
    		Ora: $ora
    		Indirizzo ip: $indirizzo
    Ma non ho idea di come fare

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    In che formato sono data e ora? Te lo chiedo per via del separatore da usare nell'explode.

  3. #3
    codice:
    <?php
    preg_match_all("#//-Data:(.*?)-ora:(.*?)-Indirizzo IP:(.*?)-//#", $lung_file122, $match);
    
    for ($i = 0; $i < count($match); $i++) {
    	echo "nr. " . ($i + 1) . "\n";
    	echo "\tData:         {$match[1][$i]}\n";
    	echo "\tOra:          {$match[2][$i]}\n";
    	echo "\tIndirizzo IP: {$match[3][$i]}\n\n";
    }
    ?>

  4. #4
    Originariamente inviato da k.b
    codice:
    <?php
    preg_match_all("#//-Data:(.*?)-ora:(.*?)-Indirizzo IP:(.*?)-//#", $lung_file122, $match);
    
    for ($i = 0; $i < count($match); $i++) {
    	echo "nr. " . ($i + 1) . "\n";
    	echo "\tData:         {$match[1][$i]}\n";
    	echo "\tOra:          {$match[2][$i]}\n";
    	echo "\tIndirizzo IP: {$match[3][$i]}\n\n";
    }
    ?>
    Grazie funziona, solo vorrei sapere cos'è la variabile $match e da dove prende il suo valore e perchè c'è count().
    (In modo da far fare il FOR più di 4 volte).

  5. #5
    $match e' un array che viene popolato dalla funzione preg_match_all() con i risultati della regexp: http://uk.php.net/manual/en/function.preg-match-all.php

    count() conta quanti elementi contiene l'array, in modo da ripetere il ciclo tante volte quante sono le serie di dati trovate.

  6. #6
    Questo è il mio PHP: (Contatore di visite)


    Codice PHP:
    <?
    if($_GET['n']==1) {
    }elseif (
    $_GET['v']==1) {

     
    $file_name="visite_.txt.txt";
     
    $complete_path=$file_name;
     
    $var=fopen($complete_path,"r+");
     
    $fp fopen($complete_path,"r+");
         
    $lung_file122 fread($fp5000); //leggiamo TUTTO
     
    fclose($fp);
     
     
    preg_match_all("#//-Data:(.*?)-ora:(.*?)-Indirizzo IP:(.*?)-//#"$lung_file122$match);

    echo 
    "
    Utenti che hanno visitato questa pagina: 
    "
    ;

    for (
    $i 0$i count($match); $i++) {
        echo 
    "nr. " . ($i 1) . "

    "
    ;
        echo 
    "Data:         {$match[1][$i]}
    "
    ;
        echo 
    Ora:          {$match[2][$i]}
    ";
        echo "
    Indirizzo IP: {$match[3][$i]}

    ";
    }

    echo "
    Ci sono state [b][i]<u>".count($match)."</u>[/i][/bvisite";

     exit;
    }else {
        
        
    $data = (date("d/m/y"));
        
    $ora = (date("G:i"));
        
        
    $file_name="visite_.txt.txt";
        
    $complete_path=$file_name;
        
    $var = fopen($complete_path,"a+");//Creo il file
        
    $fp = fopen($complete_path,"a+"); //Creo il file
             fwrite(
    $var,"//-Data:".$data."-ora:".$ora."-Indirizzo IP:".$_SERVER['REMOTE_ADDR']."-//");
        
    fclose($fp);
    }
    ?>
    Alla fine dice che ci sono state sempre 4 visite, sia se non ci siano state proprio sia, se siano di meno, sia se siano più di 5.

    Il ciclo viene effetuato sempre 4 volte.

    Puoi anche vedere, questo è l'URL del file:
    http://mapoetto.altervista.org/edito...isite_.txt.txt

    Qui dove si vedono le visite:
    http://mapoetto.altervista.org/edito...efault.php?v=1

  7. #7
    Hai ragione, errore mio. Sostituisci count($match) con count($match[0])

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.