2014-07-23 52 views
4

我有一個文本文件here,我需要能夠轉換成行以從中提取第二,第三,第四和第五個值。使用PHP將文本文件轉換爲數組

每行的前7個值是製表符分隔的,然後是換行符,然後最後三個值是製表符分隔的。

我刪除了中斷換行符,以便每行都完全製表符分隔。

<?php 

$file="140724.txt"; 

$fopen = fopen($file, "r"); 

$fread = fread($fopen,filesize("$file")); 

fclose($fopen); 

$remove = "\n"; 

split = explode($remove, $fread); 

foreach ($split as $string) 
{ 
echo "$string<br><br>"; 
} 

?> 

其中產生this

我不確定從哪裏開始。我自學PHP並且還很新,所以我甚至不知道我從哪裏開始是一個好地方。我的直覺是將前一個輸出寫入一個新的文本文件,然後創建另一個與第一個類似的代碼塊,但這次基於選項卡進行爆炸。

幫助?

+1

的可能重複([如何使用PHP和fgetcsv函數來創建從CSV文件數組] http://stackoverflow.com/questions/1269562/how-to-create-an-array-from -a-csv-file-using-php-and-the-fgetcsv-function) – feeela

+0

爲什麼你不應該把鏈接放在問題或答案中,因爲上面的兩個鏈接都是死的。 – Craicerjack

回答

7

您可以在一個處理此文件是這樣的:

<?php 
    $file="140724.txt"; 

    $fopen = fopen($file, r); 

    $fread = fread($fopen,filesize($file)); 

    fclose($fopen); 

    $remove = "\n"; 

    $split = explode($remove, $fread); 

    $array[] = null; 
    $tab = "\t"; 

    foreach ($split as $string) 
    { 
     $row = explode($tab, $string); 
     array_push($array,$row); 
    } 
    echo "<pre>"; 
    print_r($array); 
    echo "</pre>"; 
?> 

其結果將是一個交錯的數組:

enter image description here

您將需要清理的第一個和最後一個元件。

+0

完美。謝謝! – Malignus

1

這是由製表符分隔的結構化數據。您可以use fgetcsv()將該數據讀入數組。有關示例,請參閱PHP文檔。

+0

正如一個額外的製表符分隔符是\ t所以作爲fgetcsv的第三個參數放''t' – peterpeterson

+0

原始文件中有換行符,但它不是純粹的製表符分隔。你是說我應該使用fgetcsv()到我的代碼塊的輸出嗎? – Malignus

+1

@Malignus你在開玩笑嗎?你甚至嘗試打開PHP文檔?好的,下一步 - 閱讀它。 – feeela

0
<?php 
$myfile = fopen("test.txt", "r") or die("Unable to open file!"); 
// Output one line until end-of-file 
while(!feof($myfile)) { 
    $text[] = fgets($myfile); 
} 
fclose($myfile); 
print_r($text); 
?> 
+0

對你的代碼做什麼的一點解釋不會傷害任何人。 – croxy