Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    443

    preg_match e carriage returns

    Help, i carriage rturns mi hanno messo in crisi:

    Lo script dovrebbe leggere dei dati da un file di testo con il seguente contenuto:

    <WEAT_DATE>
    19.09.2005
    </WEAT_DATE>
    <WEAT_TODAY_D>
    SOLEGGIATO
    </WEAT_TODAY_D>

    Funziona solo sel il file "file.txt" e`scritto nella seguente maniera, cioè senza carriage returns.

    <WEAT_DATE>19.09.2005</WEAT_DATE><WEAT_TODAY_D>SOLEGGIATO</WEAT_TODAY_D>


    Come dovrei modificare la funzione preg_match per leggere i valori anche se ci sono carriage returns?

    Codice PHP:

      $tempo 
    =  "file.txt";  //file da leggere 
      
    if(file_exists($tempo)) //verifica la presenza del file

         
    $handle fopen($tempo"rb"); // apertura file
         
    $file fread($handlefilesize($tempo)); // lettura file
         
    fclose($handle);  // chiusura file
    //WEAT_DATE
        
    preg_match("/<WEAT_DATE>(.*?)<\/WEAT_DATE>/",$file,$WEAT_DATE);  
        echo 
    $WEAT_DATE[0]."
    "
    ;
    //WEAT_TODAY_D
        
    preg_match("/<WEAT_TODAY_D>(.*?)<\/WEAT_TODAY_D>/",$file,$WEAT_TODAY_D);  
        echo 
    $WEAT_TODAY_D[0]."
    "
    ;
    }

        else {echo 
    "file non esiste";} 

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Prova cosi ....

    codice:
    preg_match("/<WEAT_DATE>(.*?)</WEAT_DATE>/sU",$file,$WEAT_DATE);
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    443
    funziona,.....

    grazie 1000

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    443
    ... sorry,

    non ho dato un occhiata alla sorgente html......


    ..vedo solo i dati,

    19.09.2005
    SOLEGGIATO

    .. ma nella sorgente retano i TAG

    codice HTML:
    <WEAT_DATE>
    19.09.2005
    </WEAT_DATE>
    <WEAT_TODAY_D>
    SOLEGGIATO
    </WEAT_TODAY_D>
    mi servirebbero solo i valori che poi vado ad inserire in un DB

    .. qualche suggerimento ?

    grazie

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Beh puoi usare preg_match_all.

    codice:
    <? 
    $tempo =  "file.txt";  //file da leggere 
    if(file_exists($tempo)) { //verifica la presenza del file 
     
     $handle = fopen($tempo, "rb"); // apertura file 
     $file = fread($handle, filesize($tempo)); // lettura file 
     fclose($handle);  // chiusura file 
     //WEAT_DATE 
     preg_match_all("|<WEAT_DATE>(.*)</WEAT_DATE>|sU",$file,$WEAT_DATE);   
     print_r( $WEAT_DATE); print "
    "; 
     //WEAT_TODAY_D 
     preg_match_all("|<WEAT_TODAY_D>(.*)</WEAT_TODAY_D>|sU",$file,$WEAT_TODAY_D);   
     print_r( $WEAT_TODAY_D); print "
    "; 
    } else {echo "file non esiste";}
    
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    443
    Grazie,

    .. funziona

    .. funziona anche con

    Codice PHP:
    //WEAT_DATE
        
    $tag "WEAT_DATE";
        
    preg_match("/<$tag>(.*)<\/$tag>/sU",$file,$tag);  
        
    $WEAT_DATE strip_tags($tag[0]); 
        echo 
    $WEAT_DATE."
    "
    ;
    //WEAT_TODAY_D
        
    $tag "WEAT_TODAY_D";
        
    preg_match("/<$tag>(.*)<\/$tag>/sU",$file,$tag);  
        
    $WEAT_TODAY_D strip_tags($tag[0]); 
        echo 
    $WEAT_TODAY_D."
    "
    ;
    }

        else {echo 
    "file non esiste";

    Secondo Te, quali delle 2 soluzioni è meglio addottare?

    Grazie

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Originariamente inviato da epescol
    Grazie,

    .. funziona

    .. funziona anche con

    Codice PHP:
    //WEAT_DATE
        
    $tag "WEAT_DATE";
        
    preg_match("/<$tag>(.*)<\/$tag>/sU",$file,$tag);  
        
    $WEAT_DATE strip_tags($tag[0]); 
        echo 
    $WEAT_DATE."
    "
    ;
    //WEAT_TODAY_D
        
    $tag "WEAT_TODAY_D";
        
    preg_match("/<$tag>(.*)<\/$tag>/sU",$file,$tag);  
        
    $WEAT_TODAY_D strip_tags($tag[0]); 
        echo 
    $WEAT_TODAY_D."
    "
    ;
    }

        else {echo 
    "file non esiste";

    Secondo Te, quali delle 2 soluzioni è meglio addottare?

    Grazie
    Il problema è che se hai diverse volte i tuoi tags, non li prende.
    Poi l'indice 0 è la ripetizione del match globale. Se vuoi vedere tutti i valori devi prendere gli indici da 1 in poi ( guarda nel mio secondo esempio come viene strutturato l'array )
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    443
    grazie del consiglio

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 © 2024 vBulletin Solutions, Inc. All rights reserved.