2013-10-18 118 views
3

我有一個巨大的文本文件的結構如下所示:PHP製表符分隔文本文件導入陣列

email 1 
email 14 
email 1 
email 244 
email 232 
email 23 
email 1 

我想文本文件中提取到一個數組,在那裏我可以再刪除所有電子郵件,所以不有一個號碼。現在我限制在前20位,所有這些數字都是1,但我在我的陣列中唯一得到的是數字1.當我吐出行中的項目數時,它表示1。

$file = "list.txt";// Your Temp Uploaded file 
$cols = array(); 
ini_set('auto_detect_line_endings', true); 

$fh = fopen($file, 'r'); 
$i = 0; 

while ($line = fgetcsv($fh, 1000, "\t") !== false) { 
    $cols[] = $line; 

    if($i == 19) { break; } 
    $i++; 
    } 

echo "<pre>"; 
print_r($cols); 
echo "</pre>"; 

Array 
(
[0] => 1 
[1] => 1 
[2] => 1 
[3] => 1 
[4] => 1 
[5] => 1 
[6] => 1 
[7] => 1 
[8] => 1 
[9] => 1 
[10] => 1 
[11] => 1 
[12] => 1 
[13] => 1 
[14] => 1 
[15] => 1 
[16] => 1 
[17] => 1 
[18] => 1 
[19] => 1 
) 

我試圖改變\t\n但這並沒有改變結果。如果我可以在一個步驟中做到這一點,那會更好,請檢查行中的第二個項目,如果它是一個項目,則將第一個項目(電子郵件)添加到數組中。否則不要。在這一點上,我會拿我能得到的!任何想法或建議?


我現在得到的數組中的項目,但它合併列到一個數組項:

Array 
(
[0] => Array 
    (
     [0] => EMAIL 1 
    ) 
) 

有沒有辦法讓我吐出列到單獨的鑰匙?所以:

Array 
(
[0] => Array 
    (
     [0] => EMAIL 
     [1] => 1 
    ) 
) 
+0

檢查,如果分隔符是'Tab'(\ T)或'Space' – bansi

+0

@cfox根據您的更新:如果它把它們放在一個列然後它不是製表符分隔'\ t'現在嘗試使用空格'' – cmorrissey

+0

我實際上已經改變了原來的空間,不得不改變它回到標籤。謝謝! – cfox

回答

6

你需要來包裝你while語句更()

while ($line = fgetcsv($fh, 1000, "\t") !== false) { 

應該

while (($line = fgetcsv($fh, 1000, "\t")) !== false) { 
+0

這解決了它,但創建了一個新的問題:)接受你的答案,因爲這是主要問題。 – cfox

+0

@cfox新的問題是什麼? – cmorrissey

+0

更新了原來的問題。 – cfox

相關問題