Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Confronto stringhe

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    172

    Confronto stringhe

    ciao
    io ho un file di testo dove sono contenuto diverse parole, una sotto l'altra, vorrei proiettare a video solo quelle che terminano con le stesse ultime tre lettere della parola inserita dall'utente

    ho impostato cosi per ora
    ma mancono alcune cose
    come posso fare?
    grazie!

    Codice PHP:
    <table border="0" width="100%">
            <td>
            <form method="POST" action="index.php">
                <p align="center"></p>
                <p align="center"><input type="text" name="parola" size="20"><input type="submit" value="Cerca" name="cerca"></p>
            </form>
            </td>
        </tr>
        </table>
    <?php
    if($_POST['parola'] != "")
    {
    $fCont file_get_contents("lista.txt");
    $toSrc $_POST['parola'];

    $posizioni = array();  // questo array conterrà tutte le posizioni trovate..

    do
    {
        
    $pos strpos($fCont$toSrc, (count($posizioni) > 0) ? ($posizioni[count($posizioni)] + 1) : 0);  // questo cerca la sottostringa $toSrc nella stringa $fCont a partire dalla posizione successiva all'ultima trovata..
        
    if ($pos !== false)
            
    $posizioni[] = $pos;  // se ha trovato qualcosa lo mette nell'array..
    } while ($posizione !== false);

    print_r($posizioni);  // stampa l'array a video.. qui chiaramente modifichi come ti pare.. 
    }
    else
    echo
    "Inserisci una parola";
    ?>

  2. #2
    Ciao Urzetto,
    non so se esiste una funzione tipo 'endsWith' di Java,
    ma potresti fare così:

    recuperate le ultime tre lettere della parola inserita dall'utente ti basterebbe
    verificare se la parola che hai in canna dal file contiene quella stringa
    e se la sua posizione è >= alla lunghezza della parola - 3.
    Per trovare la posizione puoi usare questa funzione:
    Codice PHP:
    int stripos string $haystack string $needle [, int $offset] )

    Returns the numeric position of the first occurrence of needle in the haystack string

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    172
    puoi farmi un esempio sul mio file che non ho capito molto bene
    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    io agirei diversamente... il fatto che le parole siano "una sotto l'altra" nel file mi fa intuire che sono separate da dei caratteri di "a capo"... in ogni caso saranno separate da qualcosa!

    Quindi farei così:
    1. leggo il file con le parole già separate mettendole in un array
    2. scanning dell'array: se la parola "corrente" risponde alla condizione la proietto, altrimenti no

    (nel punto 2 si può fare in vari modi, per esempio creare un nuovo array o magari cancellare le parole che non mi interessano)

    in pratica qualcosa come:

    Codice PHP:
    ...
    $ultimitrecaratteri substr($_POST['parola'], -3);
    $parole file('lista.txt'); // suppongo siano separate da "a capo", altrimenti si può fare in altro modo... fammi sapere eventualmente
    foreach ($parole as $parola) {
      if (
    substr($parola, -3)==$ultimitrecaratteri) {
        print 
    "$parola
    "
    // stampa a video
      
    };
    }; 
    nota: non ho verificato il codice... ma il senso dovrebbe essere chiaro

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    172
    il concetto sembra giusto
    ma in che senzo separate da a capo, in un file di testo nn è come un file htm che ci sono i codici
    cmq si sono a capo,
    però non stampa a video nnt questo script...

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se aprendo il file nel "blocco note" le parole sono "una sotto l'altra" il carattere di separazione è "a capo"...

    il fatto che non stampi nulla vuol dire che nessuna parola risponde al requisito...

    prova ad aggiungere...

    prima della riga con "foreach":
    [PHP] print "'$ultimitrecaratteri'
    ";[PHP]

    e dopo "foreach" e prima di "if":
    [PHP] print "'$parola', '".substr($parola, -3)."'"; [PHP]

    così vedi a video quali caratteri sta cercando e le parole che trova... magari posta l'inizio (nota: se la lista è lunga fai una prova con 4/5 parole soltanto)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    172
    facendo cosi me le stampa a video proprio tutte!

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi postare il risultato dell'ultimo script?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    172
    asd nn conviene è tanto lungo
    sono tantissime le parole
    cmq è tipo cosi

    ho ricercato la parola "intralci"
    dovrebbe darmi quelle che finiscono
    per "lci"

    invece

    'lci'
    ' ', ' ''a ', 'a ''abate ', 'te ''abati ', 'ti ''abbagli ', 'li ''abbaglia ', 'ia ''abbagliai ', 'ai ''abbagliamo ', 'mo ''abbagliano ', 'no ''abbagliare ', 're ''abbagliata ', 'ta ''abbagliate ', 'te ''abbagliati ', 'ti ''abbagliato ', 'to ''abbagliava ', 'va ''abbagliavi ', 'vi ''abbagliavo ', 'vo ''abbagliera ', 'ra ''abbagliero ', 'ro ''abbaglino ', 'no ''abbaglio ', 'io ''abbai ', 'ai ''abbaia ', 'ia ''abbaiai ', 'ai ''abbaiammo ', 'mo ''abbaiamo ', 'mo ''abbaiando ', 'do ''abbaiano ', 'no ''abbaiare ', 're ''abbaiarono ', 'no ''abbaiasse ', 'se ''abbaiassi ', 'si ''abbaiaste ', 'te ''abbaiasti ', 'ti ''abbaiata ', 'ta ''abbaiate ', 'te ''abbaiati ', 'ti ''abbaiato ', 'to ''abbaiava ', 'va ''abbaiavamo ', 'mo ''abbaiavano ', 'no ''abbaiavate ', 'te ''abbaiavi ', 'vi ''abbaiavo ', 'vo ''abbaiera ', 'ra ''abbaierai ', 'ai ''abbaierei ', 'ei ''abbaieremo ', 'mo ''abbaierete ', 'te ''abbaiero ', 'ro ''abbaini ', 'ni ''abbaino ', 'no ''abbaio ', 'io ''abbandona ', 'na ''abbandonai ', 'ai ''abbandoni ', 'ni ''abbandono ', 'no ''abbassa ', 'sa ''abbassai ', 'ai ''abbassammo ', 'mo ''abbassando ', 'do ''abbassano ', 'no ''abbassare ', 're ''abbassasse ', 'se ''abbassassi ', 'si ''abbassaste ', 'te ''abbassasti ', 'ti ''abbassata ', 'ta ''abbassate ', 'te ''abbassati ', 'ECCCCCCCC.........................

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    172
    poi perchè mostra le ultime 2 lettere dopo di ogni parola?
    :S

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.