Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Problema con comparazione stringhe: dovrebbero essere uguali ma non lo sono

    Salve a tutti,
    parso un file csv (con i campi messi in un array) e poi ho un codice di questo tipo:
    codice:
    echo 'Data[12] = '.$data[12].'<br>';
    if ($data[12] == 'Vini') {
      echo 'E Vini<br>';
    } else {
      echo 'NON E Vini<br>';
    }
    echo 'strcmp: '.strcmp($data[12], 'Vini').'<br>';
    Quello che ottengo è questo:
    codice:
    Data[12] = Vini
    NON E Vini
    strcmp: -1
    
    Come si vede, $data[12] effettivamente ha il valore "Vini" ma il ciclo if mi va nell'else e strcmp mi torna -1.

    Non riesco a capire in nessun modo. Ho provato anche a castare la variabile a string, ma il risultato non cambia.

    Qualche idea?

    Grazie

  2. #2
    Ci sara' qualche blank space, tipo un a capo, vedi cosa dice

    Codice PHP:
    var_dump($data[12]); 

  3. #3
    usa var_dump() e vedrai che la lunghezza di $data[12] probabilmente è maggiore di 4. Sicuramente ci sono dei caratteri particolari tipo \n, \t ecc.
    Prova a utilizzare la funzione trim();
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    string(9) "Vini"

    e ho provato anche a utilizzare la funzione trim

  5. #5
    Quote Originariamente inviata da kylnas1 Visualizza il messaggio
    string(9) "Vini"

    e ho provato anche a utilizzare la funzione trim
    Posta il codice che hai provato.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    codice:
    echo urlencode($data[12]);
    Cosa restituisce?

  7. #7
    Quote Originariamente inviata da .Kurt Visualizza il messaggio
    codice:
    echo urlencode($data[12]);
    Cosa restituisce?
    codice:
    %00V%00i%00n%00i%00
    

  8. #8
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Posta il codice che hai provato.
    codice:
    if (trim($data[12]) != '' && !isset($categories[trim($data[12])])) {
                            echo urlencode($data[12]).'<br><br>';
                            var_dump(trim($data[12])).'<br>';
                            echo 'Data[12] = '.$data[12].'<br>';
                            if ($data[12] == 'Vini') {
                                echo 'E Vini<br>';
                            } else {
                                echo 'NON E Vini<br>';
                            }
                            echo 'strcmp: '.strcmp($data[12], 'Vini').'<br>';
                        }

  9. #9
    Non mi sembra tu abbia utilizzato il trim():

    Codice PHP:
    ...
    if (
    $data[12] == 'Vini') {
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Quote Originariamente inviata da kylnas1 Visualizza il messaggio
    codice:
    %00V%00i%00n%00i%00
    
    Allora usa questo:

    Codice PHP:
    $data[12] = str_replace("\0"""$data[12]); 

    pero' piu' che altro indagherei sul perche' quella stringa e' piena di null characters.

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.