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?
Prova 'var_dump (bin2hex ($ disabled [0]))'. '" "' non dovrebbe essere '(1)' carattere lungo. – deceze
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
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