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

    Ordine in base ad uguaglianza

    Ciao a tutti
    Non riesco a venire a capo, ormai già da un pò, di uno "strano" problema legato alle stringhe.
    Strano non perchè genera un errore anomalo, ma perchè ciò che intendo fare non è da tutti i giorni
    Ciò che desidero fare è ricercare in una stringa (passata via GET da un form) l'affinità con un altra stringa fissa.
    Mi chiarisco. Se ho una stringa fissa $stringa_fissa="Marco" vorrei che le varie stringhe inviate via GET siano comparate con $stringa_fissa e ordinate in base all'uguaglianza con quest'ultima.

    Ecco un esempio:
    Utente 1: Mimmo
    Utente 2: Marcello
    Utente 3:Veronica
    Utente 4: Marco

    Ordine in base all'uguaglianza con "Marco":
    Utente 4: Marco
    Utente 2: Marcello
    Utente 1: Mimmo
    Utente 3: Veronica

    Non so assolutamente come fare..qualcuno sa essermi di aiuto? Sto uscendo pazzo.
    Chiedo scusa per la probabile scarsa comprensione e per la perdita di tempo.

    Grazie mille a tutti
    Marco

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    devi spiegare cos'è per te questa "affinità"... ci sono vari modi per comparare le stringhe... in generale potresti fare un ciclo e assegnare un "peso" in base al risultato di un confronto per riordinare i valori stessi, tipo...

    Codice PHP:
    $voci = array(...); // array con i valori da paragonare
    $str '...'// stringa di riferimento

    // procedura:
    $ris = array(); // conterrà i valori riordinati
    foreach ($voci as $voce) {
      
    $val funzioneconfronto($voce$str);
      
    $ris[$val][] = $voce;
    };
    print_r($ris); 
    per scegliere funzioneconfronto devi decidere che cos'è per la "affinità"...

  3. #3
    Per affinità intendo la maggiore o minore uguaglianza rispetto alla "stringa madre"

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    sì, ma "maggiore o minore" uguaglianza tra stringhe è un concetto troppo ampio... scegli una funzione o un algoritmo di confronto... potresti usare il mio es. e implementare la funzione di confronto così:

    Codice PHP:
    function funzioneconfronto($a$b) {
      return (
    levenshtein($a$b));
    }; 

  5. #5
    Non conoscevo la funzione levenshtein.
    Qual'è la sua funzione?

  6. #6
    Originariamente inviato da marco476
    Non conoscevo la funzione levenshtein.
    Qual'è la sua funzione?
    http://www.php.net/manual/en/function.levenshtein.php

  7. #7
    Ti ringrazio.
    Ho formulato questo codice, visto che sono un pò arrugginito con il PHP mi faresti un gran piacere se ci butteresti un occhio

    Codice PHP:
    <?php
    $keyword
    =array("jquery","plugin javascript","Jquery","programmazione","JQUERY");
    $key="jquery";
    foreach(
    $keyword as $keyword)
    $risultato[levenshtein($keyword,$key)]=$keyword;
    asort($risultato);
    foreach(
    $risultato as $risultato)
    echo 
    $risultato." ";
    ?>
    Grazie ancora!

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    leggere correzioni... prova un po':

    Codice PHP:
    <?php
    $risultati 
    = array(); // inizializzo il vettore dei risultati
    $keywords = array("jquery","plugin javascript","Jquery","programmazione","JQUERY"); 
    $key="jquery";
    // scorro le keywords:
    foreach($keywords as $keyword) {
      
    // devo usare un vettore perchè
      // più keywords potrebbero avere la stessa "distanza"
      // dalla key (ecco perchè le ulteriore parentesi quadre)
      
    $risultati[levenshtein($keyword,$key)][] = $keyword
    };
    ksort ($risultati);
    foreach (
    $risultati as $risultato) {
      
    print_r($risultato); // potrebbe essere un vettore di più parole
    };
    ?>

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.