2011-04-01 134 views
3

如果我顯示$d[0][email protected]但它拒絕接受,如果...PHP不會比相同的字符串

$d = file("mails.txt"); 
if ($d[0] == "[email protected]") { 
    echo "JOW!"; 
} 
echo $d[0]; 

任何想法?

+4

有可能是在'$ d [0]'結束了'newline'字符。 – drudge 2011-04-01 21:15:49

+0

不,如果我將它與[email protected]進行比較,它不會觸發 – 2011-04-01 21:17:31

+1

您可以使用'var_dump'來更好地查看變量的內容,因爲它可以逃脫討厭的換行符和其他東西,所以您可以看到他們。 – Thanatos 2011-04-01 21:19:17

回答

7

嘗試在$d[0]上調用trim function,這將刪除字符串開頭和結尾處的所有新行字符。

 $d = file("mails.txt"); 
     if(trim($d[0])=="[email protected]"){ 
      echo "JOW!"; 
     } 
     echo $d[0]; 

或不包含任何新線都:

 $d = file("mails.txt", FILE_IGNORE_NEW_LINES); 
     if($d[0]=="[email protected]"){ 
      echo "JOW!"; 
     } 
     echo $d[0]; 

所得數組中的每一行都會 包括結束行,除非使用 FILE_IGNORE_NEW_LINES,所以你 仍然需要如果你使用rtrim() 不希望行結束。

來源:http://php.net/manual/en/function.file.php

+0

只trim()不是$ trim() – Dmitri 2011-04-01 21:18:55

+0

哦,你是對的:)謝謝! – 2011-04-01 21:20:12

4

我同意邁克·劉易斯,使用裝飾可能會解決它爲什麼失敗。另外,一般來說,如果您在比較字符串時在PHP中出現奇怪的結果,請嘗試'==='或strcomp以查看解決該問題的方法。

http://www.phpcatalyst.com/php-compare-strings.php

+0

或'strcasecmp',它是二進制安全的不區分大小寫的字符串比較。 – 2013-12-10 12:00:38

相關問題