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

    Confronto percentuale di due stringhe

    Ciao a tutti! Sto cercando di fare il confronto in percentuale della differenza tra due stringhe, e funziona tutto. Uso questa funzione:
    Codice PHP:
    function strings_compare($str1$str2) {
        
    $count 0;
       
        
    $str1 ereg_replace("[^a-z]"' 'strtolower($str1));
        while(
    strstr($str1'  ')) {
            
    $str1 str_replace('  '' '$str1);
        }
        
    $str1 explode(' '$str1);
       
        
    $str2 ereg_replace("[^a-z]"' 'strtolower($str2));
        while(
    strstr($str2'  ')) {
            
    $str2 str_replace('  '' '$str2);
        }
        
    $str2 explode(' '$str2);
       
        if(
    count($str1)<count($str2)) {
            
    $tmp $str1;
            
    $str1 $str2;
            
    $str2 $tmp;
            unset(
    $tmp);
        }
       
        for(
    $i=0$i<count($str1); $i++) {
            if(
    in_array($str1[$i], $str2)) {
                
    $count++;
            }
        }
       
        return 
    $count/count($str2)*100;

    che ci mette circa 3 secondi (!!!) per una stringa di 25/30 caratteri! Chiaramente se gli passo un file di testo (circa 3/4000 caratteri) lo script va in timeout...
    Ora, dal momento che più che cambiare il timeout mi piacerebbe trovare una soluzione più rapida (anche a costo di perdere di precisione), come fareste voi?

    Ho guardato anche similar_text() ma è ricorsiva, e per files grandi è (forse) anche peggio, come scritto anche sul manuale:
    This calculates the similarity between two strings as described in Oliver [1993]. Note that this implementation does not use a stack as in Oliver's pseudo code, but recursive calls which may or may not speed up the whole process. Note also that the complexity of this algorithm is O(N**3) where N is the length of the longest string.
    Grazie
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  2. #2
    up
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

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.