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

Hybrid View

  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
    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>';
                        }

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

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

  9. #9
    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.

  10. #10
    Quote Originariamente inviata da k.b Visualizza il messaggio
    trim in questo caso non va bene perche' rimuove i caratteri solo a inizio o fine stringa, qui invece i null sono in mezzo alle lettere
    Quote Originariamente inviata da kylnas1 Visualizza il messaggio
    Ho fatto varie prove, tra cui anche il trim.
    Ok avete ragione. Non avevo visto il seguente post:

    Quote Originariamente inviata da kylnas1 Visualizza il messaggio
    codice:
    %00V%00i%00n%00i%00
    
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.