2014-11-21 144 views
0

我用php上传通用文件,我读取上传文件的第一行进行验证(相当于$line2)。字符串比较总是返回false

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

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

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

检查我的输出,我发现那里有一个额外的空间$line(尽管有文件中没有多余的空间),所以我添加了额外的空间,以$ 2号线。

问题是否总是返回false。我曾尝试:

if($line == $line2) 

以及

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

很显然,我试图消除从$ 2号线的额外空间

+1

在这里复制并粘贴两行。 – slapyo 2014-11-21 17:09:54

+2

您可以使用trim()删除额外空间 – 2014-11-21 17:10:42

+0

S01700006275696C642F697269732F6D61696E2E7372656343 S01700006275696C642F697269732F6D61696E2E7372656343 – Ching 2014-11-21 17:11:58

回答

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"; 
} 
0

如果你想检测一个字符串是否简单包含另一个,正确的测试会b e if (strcmp($line,$line2) !== false)

如果你想测试平等,忽略空格,然后使用if (trim($line) === trim($line2))

0

你确定你的额外的空白确实是一个空间?

在用于filelink)手动输入,它说:

返回文件在阵列中。数组中的每个元素都对应于文件中的一行,并且还附加了换行符。

这就是为什么你的比较失败。

尝试读取该文件是这样的:

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

这应该工作。