2013-12-09 52 views
0

我有一個文本/ html文件數組,其中的內容是定價表。如何從數組中逐行讀取字符串

我想逐行讀取每行,並將每個單元格處理成數據庫。

我試過,但它似乎並沒有給我結果我期待:

$counter=1; 
while($line = explode(PHP_EOL, $attachment[$filename])) { 
    printStatus("Line: " . $counter . " « " . $line); 
    $counter++; 
} 

我已經測試數據和print $attachment[$filename]輸出如預期

上述循環的結果文件該follwing輸出:

Line: 1 « Array 
Line: 2 « Array 
Line: 3 « Array 
Line: 4 « Array 
Line: 5 « Array 
Line: 6 « Array 
Line: 7 « Array 
Line: 8 « Array 
Line: 9 « Array 

文件的前幾行是這樣的:

<!doctype html public "-//w3c//dtd html 4.0transitional//en"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
<body> 
<pre> 
<font face="courier new" size=-4> 
13/11/13           Clocking Productivity Analysis           3619 
22:46         Date Range: 01/11/13 To 13/11/13 Technician Only         Page 1 

Tech Name    Open Clock Close Avail Sold  Sold Cost  Cost Labour Margin Docs Unprod Sold/
        Rate  WIP  Hrs  WIP  Hrs  Hrs  Amt  Hrs  Amt  Gross  %   Hrs Avail% 
---- ---------------- ------ ------ ------ ------ ------ -------- ------ -------- -------- ------ ----- ------ ------ 
+0

你能提供約100您輸入字符,請...我想,如果你想通過HTML結構呈現有更好的方法。 – helle

+0

您的預期產量是多少? – MichaelRushton

+0

我希望我會在開始時看到「Line:n」文件的每一行 –

回答

2
while ($line = explode(PHP_EOL, $attachment[$filename])) 

讓我們來分析一下這個:

  • explode返回一個數組,所以$line每次while評估條件的時間是一個數組,而不是
  • $line = explode(...)被再次執行一個數組的元素,並再次,意思是在每一次循環迭代中,你都會再次爆炸字符串,並將新的數組分配給$line

要麼你想:

$lines = explode(PHP_EOL, $attachment[$filename]); 
while ($line = array_shift($lines)) 

foreach (explode(PHP_EOL, $attachment[$filename]) as $line) 
1

當前$line是數組。如果你想通過$counter使用定義$line打印當前元素這樣的:

echo $line[$counter]; 

或者使用file功能,它將返回數組了。

相關問題