Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Leggere pezzi di file!

  1. #1

    Leggere pezzi di file!

    Ciao a tutti... ho un file di testo con più righe ed a capo... messi in modo non ordinato.
    In questo file ci sono delle informazioni standard. Un qualcosa del tipo:

    blah blah blah
    FROM: pippo
    blah bla bla
    blah blah bla blah blas blah blah
    TO: franco
    Blah Blah blah

    Io so che le informazioni iniziano sempre con delle parole conosciute (FROM:, TO:,...) ed hanno sempre l'acapo finale o un carattere/stringa conosciuto
    Con il normale codice dovrei fare split o simili per riuscire a tirare fuori le info... ma mi chiedevo se con REG EXP posso isolare qualcosa tra 2 pezzi di stringhe
    GRAZIE
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  2. #2
    up
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  3. #3
    Certo si puo' fare usando la funzione preg_match_all() in modo appropriato
    Codice PHP:

        $input_stream 
    "Input"# qui tutto il testo che vuoi
        
    $pattern '/[*]([^>]+)<\/li>/'# L'espressione la devi personalizzare
        
    $match_result preg_match_all("$pattern"$input_stream$match_espPREG_SET_ORDER);
        foreach(
    $match_esp as $key)
        {
            
    $My_Text $Key['2']; # L'indice va in base al pattern utlizzato
            
    echo $My_Text." \n ";
        } 
    Questo esempio mostra come estrarre le stringhe negli elenchi delle pagine html.
    Se hai a che fare con i file tipo MailBox devi modificare un po' il codice dipende da
    quello che vuoi estrarre.

  4. #4
    Per esempio (col testo del primo post) vorrei tirar fuori la stringa tra "FROM:" e "TO:"
    Come cambio il pattern?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  5. #5
    Proviamo questo
    Codice PHP:
    $pattern '/FROM:{5}([^:]*)TO:{3}/'
    Non ho verificato: metti un exit alla prima occorrenza trovata in questo modo:

    Codice PHP:
        $match_result preg_match_all("$pattern"$input_stream$match_espPREG_SET_ORDER);
         die(
    print_r($match_exp)); # prova a fare diverse verifiche prima di affidarti al 100%
                                   # una volta che hai constatato che l'output stampato ti
                                   # soddisfa metti un hash-mark (#) al die()
        
    foreach($match_esp as $key)
        {
            
    $My_Text $Key['2']; # L'indice va in base al pattern utlizzato
            
    echo $My_Text." \n ";
        } 
    Fammi sapere

  6. #6
    non mi funziona... mi restituisce una stringa vuota (immagino) perchè non visualizza nulla
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  7. #7
    Con le regexp non ci sono riuscito... metto il codice per una soluzione "normale", poi se a qualcuno viene una idea migliore...
    Codice PHP:
     $inizio="FROM:";
     
    $fine="TO:";
     
    $txt strstr($testo$inizio);
     
    $pos strpos($txt$fine);
     
    $txt substr($txt,strlen($inizio),$pos-strlen($fine)-1);
     return 
    trim($txt); 
    Se uno ha a disposizione PHP 5.3 è ancora più facile perchè strstr da la possibilità di prendere una stringa prima dell'occorrenza (basta guardare su php.net è ben spiegato)
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  8. #8
    Sei riuscito allora?

    Comunque ho fatto delle verifiche sulle righe di codice che scritto io. Effettivamente non estrapolava nulla,
    ho modificato cosi' e va bene
    Codice PHP:
    /**
     * $input_stream e' il testo preso come input. Puo' corrispondere anche al contenuto di un file
     * preg_match_all() e' case sensitive quindi tiene conto delle maiuscole/minuscole quindi
     *                             FROM: e' diverso da From:
     */
    $pattern '/FROM:([^:]*)TO:/';
    $match_result preg_match_all("$pattern"$input_stream$match_espPREG_SET_ORDER);
    foreach(
    $match_esp as $key)
    {
        
    $My_Text chop($key['1']); 
        echo 
    trim($My_Text)."\n---------------------\n";

    L'ho provato e mi ha dato buoni risultati.

  9. #9
    allora riprovo anche il tuo... ma secondo te alla fine come prestazioni... qual'è il migliore?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

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.