2014-11-21 128 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]; 

這應該工作。