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

    Dividere stringa di ricerca in parole

    Salve, sto cercando,per un progetto universitario, di fornire dei risultati intelligenti alla richiesta di un utente.
    Quello che mi occorrerebbe adesso è riconoscere ogni singola parola immessa nel form di ricerca dall'utente per poter poi individuare una categoria di appartenenza delle suddette parole che le contenga tutte o quanto meno la maggior parte di esse.
    Credo che qualcosa che si avvicina a quello che voglio si possa ottenere tramite la funzione explode() voi che dite???
    Grazie mille a tutti per l'aiuto!
    Se incontrerai qualcuno persuaso di sapere tutto e di essere capace di fare tutto, non potrai sbagliare: costui è un imbecille.
    Confucio.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Che explode() va bene per quello che devi fare, ma devi prima elaborare la stringa in modo che vengano rimossi eventuali spazi multipli perché se l'utente scrivesse ad esempio:
    codice:
    chiave  di ricerca
    con 2 spazi tra "chiave" e "di", explode ti darebbe come risultati
    "chiave"
    " "
    "di"
    "ricerca"

    quindi ti ritroveresti con uno spazio tra le parole.

    La funzione per sistemare gli spazi multipli la puoi creare usando un'espressione regolare e la funzione preg_replace()

  3. #3
    quindi qualcosa del tipo $xpl = explode(" " , $str); non va bene?
    Se incontrerai qualcuno persuaso di sapere tutto e di essere capace di fare tutto, non potrai sbagliare: costui è un imbecille.
    Confucio.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Si, ma devi prima rimuovere tutti gli spazi multipli dalla stringa di ricerca.
    Oppure puoi non rimuoverli ed ignorare le posizioni dell'array $xpl che contengono solo spazi.

  5. #5
    per ora mi da errore pure questo...
    codice:
    $str="tutore bastone macchina";
    $xpl = explode(" " , $str);
    $i=count($xpl);
    echo $i;
    $h=0;
    while ($h <= $i)  
    {  
    $nome=$xpl[$h];
    echo "$nome";
    $sql70 = "SELECT id FROM parole WHERE nome='".$nome."' ";
    $result70= mysql_query($sql70, $db);
    
    if(mysql_num_rows($result70 !=0)){echo"parola trovata";}else{echo"parola non trovata";}
      $h++;  }
    mysql_num_rows() expects parameter 1 to be resource, boolean
    Se incontrerai qualcuno persuaso di sapere tutto e di essere capace di fare tutto, non potrai sbagliare: costui è un imbecille.
    Confucio.

  6. #6
    oddio scusate ho scritto male la funzione mysql_num_rows
    Se incontrerai qualcuno persuaso di sapere tutto e di essere capace di fare tutto, non potrai sbagliare: costui è un imbecille.
    Confucio.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da lollythefighter
    per ora mi da errore pure questo...
    codice:
    $str="tutore bastone macchina";
    $xpl = explode(" " , $str);
    $i=count($xpl);
    echo $i;
    $h=0;
    while ($h <= $i)  
    {  
    $nome=$xpl[$h];
    echo "$nome";
    $sql70 = "SELECT id FROM parole WHERE nome='".$nome."' ";
    $result70= mysql_query($sql70, $db);
    
    if(mysql_num_rows($result70 !=0)){echo"parola trovata";}else{echo"parola non trovata";}
      $h++;  }
    mysql_num_rows() expects parameter 1 to be resource, boolean

    Codice PHP:
    if(mysql_num_rows($result70)>0){...} 

  8. #8
    si grazie mille mi sono accorto anch'io dell'errore è dalle 7 e mezza di questa mattina che sto qua davanti comincio a perdere colpi...
    Se incontrerai qualcuno persuaso di sapere tutto e di essere capace di fare tutto, non potrai sbagliare: costui è un imbecille.
    Confucio.

  9. #9
    E' da qualche tempo che anch'io sto pensando di realizzare una cosa del genere. Purtroppo, per mancanza di tempo, ne sto rimandando l'attuazione.
    Per eliminare dalla frase di ricerca tutte le parole non significative avevo pensato di creare una matrice, o un file, contenente tutte queste parole (articoli, congiunzioni, pronomi, ecc, compreso uno spazio: " ")
    Poi tratterei la frase in questo modo:
    Codice PHP:
    $frase "Prove tecniche di trasmissione con parole futili";
    $sub explode (" "$frase);
    for (
    $i 0$i count ($sub); $i++) {
        if (!
    in_array($sub[$i],$bad)) {
            
    $word[] = $sub[$i];
        }

    Controllando il numero di parole contenute nella frase originale e il numero di parole accettate ho ottenuto: 7 (le parole originali) e 5 (le parole accettate).
    Non so comunque se questo metodo possa andar bene per quel che vuol fare lollythefighter

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.