Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    30

    ottenere le differenze fra la comparazione di 2 stringhe

    salve a tutti tralasciando la funzione strcmp(); e il classico confronto fra due stringhe in php... che ovviamente mi è chiaro , quello che sto' cercando di trovare è un metodo o un sistema che mi permetta di ottenere le differenze fra due stringhe messe a confronto. (questo chiaramente solo se fra la prima stringa e la seconda esistono delle differenze altrimenti se sono perfettamente uguali il problema non si pone)
    spero che come è stata posta la domanda sia sufficentemente chiara....
    come sempre grazie a tutti !

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    63
    Ciao,

    il tuo problema sembra piuttosto semplice. Ovviamente presumo che le stringhe in questione abbiamo più parole ciascuna.

    Es:

    Codice PHP:
    $stringa1 "Questa è una stringa";
    $stringa2 "Questa è una seconda stringa"

    1. Per prima cosa prendi le due stringhe e utilizza la funzione explode() per trasformarle in due array (come separatore utilizza lo spazio).
    2. Tramite la funzione count(), ricavati l'array che contiene più elementi.
    3. Utilizza un foreach per ciclare l'array ricavato al passo 2). Dentro tale ciclo, verifica tramite un if quali elementi dell'array non sono contenuti nell'altro array (quello più piccolo). Puoi usare allo scopo la funzione in_array()


    Il confronto dovrebbe essere una cosa del genere

    Codice PHP:

    $differenze 
    ''// definita fuori dal foreach

    if ( ! in_array($stringa$arrayPiuPiccolo)) {
        
    $differenze .= "Trovata differenza $stringa\n"// Questa verifica va inserita dentro il foreach


  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,694
    Lo stesso confronto si può fare con una sola riga di codice
    $differenze = array_diff($array_piu_grande, $array_piu_piccolo);

    ma funziona con l'esempio specifico, non con tutti.
    Se per esempio hai
    $stringa1 = "Questa è una prima stringa";
    $stringa2 = "Questa è una seconda stringa";

    ti direbbe solo "prima" oppure "seconda", dipende da come organizzi i confronti avendo la stessa lunghezza, invece la differenza sono entrambe le parole, non una sola.

    Oppure
    $stringa1 = "Questa è una prima stringa";
    $stringa2 = "Questa è una seconda stringa più lunga";
    Qui pur arrivando ad array di lunghezze differenti non hai il risultato corretto, perché ti perdi "prima" che sta nella prima stringa, ma non nella seconda.

    Restando su questo tipo di approccio andrebbe fatto un confronto incrociato, una cosa del tipo
    Codice PHP:
    $array1 explode(' ''Questa è una prima stringa');
    $array2 explode(' ''Questa è una seconda stringa più lunga');

    $differenze array_diff($array1$array2);
    $differenze array_merge$differenzearray_diff($array2$array1));

    // qui avrai tutte le parole diverse tra le due stringhe.
    print_r($differenze); 

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    63
    Ottima soluzione Alhazred, non avevo pensato ad array_diff(). Tra l'altro la mia soluzione andava bene solo per alcuni casi specifici.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    30
    ovviamente grazie ad entrambi!

Tag per questa discussione

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 © 2019 vBulletin Solutions, Inc. All rights reserved.