2011-04-01 93 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

相关问题