我用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中删除多余的空间
答案 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)
你确定你的额外空格确实是一个空格吗?
在file
(link)的手册条目中,它说:
返回数组中的文件。数组的每个元素对应于文件中的一行,换行符仍然附加。
这就是你的比较失败的原因。
尝试阅读这样的文件:
$line = file($target_file, FILE_IGNORE_NEW_LINES)[0];
这应该有效。