字符串比较始终返回false

时间:2014-11-21 17:08:56

标签: php

我用php上传通用文件,我读了上传文件的第一行进行验证(等于$line2)。

$line = file($target_file)[0];
$line2 = 'S01700006275696C642F697269732F6D61696E2E7372656343 ';

echo $line;
echo "<br>";
echo $line2;                                

if($line === $line2){
    echo "<br>true";
}else{
  echo "<br>false";}

检查我的输出,我发现$line中有一个额外的空格(虽然文件上没有额外的空间),所以我在$ line2上添加了额外的空格。

问题是它总是返回false。我试过了:

if($line == $line2)

以及

if(strcmp($line,$line2)==0)

显然我尝试从$ line2中删除多余的空间

3 个答案:

答案 0 :(得分:1)

您可以尝试:

$line = file($target_file)[0];
$line2 = 'S01700006275696C642F697269732F6D61696E2E7372656343 ';

echo $line;
echo "<br>";
echo $line2;                                

if(trim($line) === trim($line2)){
    echo "<br>true";
}else{
  echo "<br>false";
}

答案 1 :(得分:0)

如果您希望检测一个字符串是否只是包含另一个字符串,那么正确的测试将是if (strcmp($line,$line2) !== false)

如果要测试相等性,忽略空格,请使用if (trim($line) === trim($line2))

答案 2 :(得分:0)

你确定你的额外空格确实是一个空格吗?

filelink)的手册条目中,它说:

  

返回数组中的文件。数组的每个元素对应于文件中的一行,换行符仍然附加。

这就是你的比较失败的原因。

尝试阅读这样的文件:

$line = file($target_file, FILE_IGNORE_NEW_LINES)[0];

这应该有效。