Загрузить текстовый файл с разделителями табуляции, используя форму, а затем преобразовать в массивы PHP?

Я пытаюсь разобрать текстовый файл с разделителями табуляции в набор массивов PHP, и помощь будет очень признательна.

.txt будет выглядеть так (разделители табуляцией, а не пробелами)

data1a data1b data1c data1d
data2a data2b data2c data2d
data3a data3b data3c data3d
data4a data4b data4c data4d

и так далее

Я хочу, чтобы массивы PHP выглядели так

$arrayA = array('data1a', 'data2a', 'data3a', 'data4a');
$arrayB = array('data1b', 'data2b', 'data3b', 'data4b');
$arrayC = array('data1c', 'data2c', 'data3c', 'data4c');
$arrayD = array('data1d', 'data2d', 'data3d', 'data4d');

И мне нужен файл .txt, загруженный простой html-формой, например.

<form action="form.php" method="post" enctype="multipart/form-data">
  <label for="file">Filename:</label>
  <input type="file" name="file" id="file" /> 
  <input type="submit" name="submit" value="Submit" />
</form>

Любые идеи по коду для размещения внутри form.php?

Большое спасибо!


person J. Podolski    schedule 03.12.2012    source источник


Ответы (2)


Рассмотрите содержимое вашего text.txt файла

FristLineFirstData  FirstLineSecondData FirstLineThirdData
SecondLineFirstData SecondLineSecondData    SecondLineThirdData

Вкладка разделена.

И сценарий:

<?php
$file = "text.txt";// Your Temp Uploaded file
$handle = fopen($file, "r"); // Make all conditions to avoid errors
$read = file_get_contents($file); //read
$lines = explode("\n", $read);//get
$i= 0;//initialize
foreach($lines as $key => $value){
    $cols[$i] = explode("\t", $value);
    $i++;
}
echo "<pre>";
print_r($cols); //explore results
echo "</pre>";
?>

вернется

Array
(
    [0] => Array
        (
            [0] => FristLineFirstData
            [1] => FirstLineSecondData
            [2] => FirstLineThirdData
        )

    [1] => Array
        (
            [0] => SecondLineFirstData
            [1] => SecondLineSecondData
            [2] => SecondLineThirdData
        )

)
person e-Learner    schedule 03.12.2012

Ниже приведено базовое решение для вашей проблемы:

<?php
 $error = false;

 if (isset($_POST) && isset($_POST['submit']) && isset($_FILES) {)
    $file = $_FILES['file'];
    if (file_exists($_FILES['tmp_name'])){
       $handle = fopen($_FILES['tmp_name']);
       $data = fgetcsv($handle, 0, '\t');
    }
    // do your data processing here
    // ...
    // do your processing result display there
    // ...
    // or redirect to another page.
 }
 if ($error) {
   // put some error message here if necessary
 }
 // form display below
 ?>
 <!-- HTML FORM goes here --!>
 <?
 }
 ?>

Все данные файла будут сгруппированы в одном массиве $data, проиндексированном соответствующим номером строки в файле.

Видеть:

на сайте документации PHP.

person didierc    schedule 03.12.2012