Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Trovare parola in un file .text

    Allora, sto cercando di trovare una parola in un file .text. Il mio problema è che avendo delle parole nel file text come questo esempio,

    es.
    A001 ROMA
    A002 ABANO TERME

    se trovo "ABANO TERME" mi restituisce "A002", se trovo "ROMA" mi restituisce "NO". Ho notato che se aggiungo una terza riga, esempio:

    A001 ROMA
    A002 ABANO TERME
    A003 VERONA

    e cerco nuovamente "ABANO TERME", mi restituisce "NO", e ovviamente se vado a cercare la parola "VERONA", mi restituisce il corrispondente codice.. e cosi via.. Perchè?

    codice:
    <?php
    //$comuneNascita = "ABANO TERME";
    $comuneNascita = "ROMA";
    
    function codiceCatastale($comuneNascita) {
        $comuni = file('prova.txt'); 
        
        foreach($comuni as $comune) {         
            $arrayCodiceComune = explode("    ", $comune);
            
            //print_r($arrayCodiceComune);
            //echo "<br/>";
    
            if ($comuneNascita !== $arrayCodiceComune[1]) {
                echo "NO<br/>"; 
                continue;
            } else {
                echo $arrayCodiceComune[0];
                break;
            }
        }
    }
    
    codiceCatastale($comuneNascita);
    ?>

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    tu chiami N volte la funzione codiceCatastale e non ti restituisce il risultato che vuoi?

  3. #3
    come è formattato il file di testo?

    usi come separatore gli spazi, ma se un comune è composto da piu parole non dovrebbe funzionare.

    prova cosi

    A001:ROMA
    A002:ABANO TERME
    A003:VERONA

    Codice PHP:
    function codiceCatastale($comuneNascita) {
        
    $comuni file('prova.txt'); 
        
        foreach(
    $comuni as $comune) {         
            
    $arrayCodiceComune explode(":"$comune);
            
            if (
    $comuneNascita === $arrayCodiceComune[1]) {
                echo 
    $arrayCodiceComune[0];
                break;
            }
        }

        echo 
    "NO<br/>";


  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Il tuo problema è il delimitatore che usi per l'explode.
    Usi lo spazio, quindi per ABANO TERME hai

    $arrayCodiceComune[0] = A002
    $arrayCodiceComune[1] = ABANO
    $arrayCodiceComune[2] = TERME

    quindi in $arrayCodiceComune[1] non troverà mail la stringa "ABANO TERME" intera.

    Stesso discorso per ogni comune composto da più di una parola.
    Oltre a questo ti possono generare problemi anche eventuali spazi in coda alla riga, o spazi multipli che dividono le varie parti, ad esempio se avessi
    A001(spazio)(spazio)ROMA

    in $arrayCodiceComune[1] avresti una stringa vuota e non "ROMA".

    Se ti è possibile, cambia delimitatore, tra codice e nome del comune mettici un carattere che non usi in nessuna altro posto nel file, tipo un # ed usa questo nell'explode.

    Edit: mi ha precedutto bauleviaggiante.

    P.S. Il codice di bauleviaggiante, alla fine scriverà sempre e comunque NO, anche se trova il comune
    Ultima modifica di Alhazred; 11-05-2017 a 14:57

  5. #5
    P.S. Il codice di bauleviaggiante, alla fine scriverà sempre e comunque NO, anche se trova il comune

    Azz e vero, ci vuole un bel return; invece del break;

Tag per questa discussione

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.