2013-01-19 21 views
6

il mio codice:Impossibile confrontare stringa vuota

$disabled = $this->access->get_access('disable_header'); 
$emptyString = ''; 
var_dump($emptyString); 
var_dump($disabled[0]); 
if($disabled[0] == '') die('should be here'); 
if($disabled[0] == ' ') die('should be here'); 
die('stop'); 

e il risultato è:

string(0) "" string(1) "" stop 

tutta la mia condizione è fallito e non so perchè ..
ma se faccio $ condizione emptyString:

if($emptyString == '') die('should be here'); 

che mi dia dei risultati:

should be here 

se si vede entrambi $ dislabled [0] e $ emptyString ha la stessa stringa vuota, ma ha lunghezza diversa, se faccio $ lunghezza emptyString a 1 poi:

$disabled = $this->access->get_access('disable_header'); 
$emptyString = ' '; 
var_dump($emptyString); 
var_dump($disabled[0]); 
if($disabled[0] == '') die('should be here'); 
if($disabled[0] == ' ') die('should be here'); 
die('stop'); 

divento:

string(1) " " string(1) "" stop 

i Stil riuscito a confrontare $ disabilitare [0]

quello che ho perso?

==== === come risolvere

prima provo

mb_detect_encoding($disabled[0]); 

allora dammi risulto

ASCII 

allora provo:

var_dump(hexdec($disabled[0])) 

quindi dammi il risultato:

int(9) 

vado a tabella ASCII e 9 = tasto TAB

quindi ora faccio condizione:

if(strcmp($disabled[0],'')) die('should be here'); 

tadaaa .. è spettacolo:

should be here 

penso strcmp può funzionare per tutti i valori di inserimento, tab e spazio chiave .. qualche errore per la mia opinione?

+3

Prova 'var_dump (bin2hex ($ disabled [0]))'. '" "' non dovrebbe essere '(1)' carattere lungo. – deceze

+2

Le stringhe hanno lunghezze diverse, ma entrambe risuonano come vuote. Questo mi suggerisce che c'è qualche tipo di problema di codifica dei caratteri da qualche parte, o qualche carattere non stampabile nella seconda stringa. – GordonM

+0

id do var_dump (bin2hex ($ disabled [0])); e ottenuto: string (2) "39". Cosa significa? quale condizione per $ disabilitato [0] per ottenere il valore TRUE? – kreamik

risposta

1

ritengo

if(empty($disabled[0])) die('should be here'); 

è il modo migliore per verificare se una variabile è vuota utilizzando PHP.

"" o " " è per JavaScript.