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

    Individuare parolacce in un array (parolacce ricavate da un file .txt)

    Buongiorno, non capisco come mai la funzione *stripos* non funziona in questo codice:

    l'obbiettivo è quello di individuare la presenza di parolacce in un array utilizzando un file .txt come dizionario


    Codice PHP:

    $strings
    =array('parola','seconda parola','luna');
    $parolacce=file('parolacce.txt');

      foreach(
    $strings as $testcase){   
        foreach(
    $parolacce as $parolaccia){      
           
        
    //echo $testcase." e ".$parolaccia." ||| ";
        
    if (stripos($testcase$parolaccia) !== false){
        echo 
    "parolaccia";    
         }
       } 

    parolacce.txt non è altro che una lista di parole un per riga.

    mettendo al posto di **$parolacce=file('parolacce.txt');**
    questo **$parolacce=array('luna','sole');**
    funziona, ma sarebbe più comodo con un dizionario esterno.

    se scommento //echo $testcase." e ".$parolaccia." ||| "; vedo che i foreach funzionano... quindi non capisco quale possa essere il problema

    GRAZIE per l'aiuto.

  2. #2
    Usa array_map() per filtrare e normalizzare entrambi gli array (es. con trim() e strtolower()).

    Poi usa array_intersect() per trovare tutte le parole che sono presenti in entrambi gli array.

    https://www.php.net/array_map
    https://www.php.net/trim
    https://www.php.net/strtolower
    https://www.php.net/array_intersect

  3. #3
    Grazie per l'aiuto Filippo, gli array presentano solo caratteri e non possono essere vuoti quindi penso siano già filtrati e normalizzati.
    Poi dovrei usare ad esempio stripos() per trovare le parolacce (perchè le due parole potrebbero non essere uguali ma solo parzialmente)

    quindi come potrei fare? (ho provato a usare array_intersect() ma non ha funzionato)

    **$result = array_intersect($strings, $parolacce);**

    (potrei sbagliare coi miei ragionamenti)
    Grazie
    Ultima modifica di essegode; 21-06-2022 a 18:13

  4. #4
    Ma te lo carica il contenuto del file nell'array?
    codice:
    foreach ($parolacce as $line_num => $line) {
        echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
    }

  5. #5
    il file .txt è fatto cosi:
    codice:
    azz
    pazz
    cazz
    saee
    razz


    usando questo codice:
    foreach($parolacce as $line_num => $line){
    echo
    "Line #<b>{$line_num}</b> : ". htmlspecialchars($line)."<br />\n";
    }
    l'output è:
    Line #0 : azz
    Line #1 : pazz
    Line #2 : cazz
    Line #3 : saee
    Line #4 : razz
    Line #0 : azz
    Line #1 : pazz
    Line #2 : cazz
    Line #3 : saee
    Line #4 : razz
    Line #0 : azz
    Line #1 : pazz
    Line #2 : cazz
    Line #3 : saee
    Line #4 : razz



    scommentando questo echo:
    //echo $testcase." e ".$parolaccia." ||| ";
    l'output è:

    parola e azz ||| parola e pazz ||| parola e cazz ||| parola e saee ||| parola e razz ||| seconda parola e azz ||| seconda parola e pazz ||| seconda parola e cazz ||| seconda parola e saee ||| seconda parola e razz ||| azz e azz ||| azz e pazz ||| azz e cazz ||| azz e saee ||| azz e razz |||

    quindi sembra funzionare tutto
    Ultima modifica di essegode; 22-06-2022 a 10:31

  6. #6
    cosa potrei fare secondo te per risolvere il problema secondo te @Dascos?
    Ultima modifica di essegode; 24-06-2022 a 12:37

  7. #7
    Perchè è l'inverso..... :-D
    codice:
    stripos($parolaccia, $testcase);

  8. #8
    GRAZIE MILLE Dascos!!
    Funziona tutto ora.

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.