2014-02-13 28 views
0

我有一個html文件,ISO-8859-1,我把它的內容作爲一個數組處理,我想找到空行(空值),但不管是什麼我這樣做,該值始終評估爲非空,但我沒有看到某些行中的任何內容。我想也許是因爲不同的編碼,或者是因爲它是一個不同的編碼和一個數組,但我找不到什麼錯誤。 如果我在記事本++中更改編碼,空行保持爲空。如果我打開顯示所有隱藏字符,則只有CRLF。是否有可能因爲CRLF而不評估爲空?html文件內容評估爲非空在空行

$content = file($filename); 

1. row: <tr ... 
2. row: 
3. row: <tr> ... 

foreach ($content as $key => $value) { 
    if (!empty($value)) { 
     echo 'not empty!'; 
    } 
} 

隨處可見「不空」!在第n行。 2也(似乎是空的)。其實,我甚至無法在這個數組中搜索(使用array_search)。 這裏發生了什麼? 非常感謝!

+0

在這種情況下isset自變量存在,請嘗試使用空($值)或修剪($值)將始終返回true ==「」 –

+0

empty()也不起作用。 – user2511599

回答

1

使用

$content = file($filename, FILE_IGNORE_NEW_LINES); 

這樣你就不會得到新行。 或者,如果你想有隻不空行,使用

$content = file($filename, FILE_SKIP_EMPTY_LINES); 
+0

謝謝,但我需要那些空行,因爲我必須用它們來計算,而這仍然不能解決array_search()問題。 – user2511599

+0

您是否試過FILE_IGNORE_NEW_LINES並將isset()更改爲!empty()? – Seb

+0

對不起,這似乎是解決方案。所以這意味着CRLF是這種情況下的問題? – user2511599

0

檢查isset()的文檔:

確定是否一個變量被設定,並沒有NULL。

您的變量$value存在,但是一個空字符串,而不是null

嘗試empty()代替或者只是使用trim(),因爲一個空字符串也將評估爲false

foreach ($content as $key => $value) { 
    if (trim($value)) { 
     echo 'not empty!'; 
    } 
} 
+0

yepp你是對的,我糾正了這個問題。 – user2511599