Загрузить текстовый файл с разделителями табуляции с помощью формы, а затем превратить в массивы 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?
Большое спасибо!
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>";
?>
вернусь
массив ( [0] => Массив ( [0] => FristLineFirstData [1] => FirstLineSecondData [2] => FirstLineThirdData) [1] => Массив ( [0] => SecondLineFirstData [1] => SecondLineSecondData [2] => SecondLineThirdData))
Ниже приведено простое решение вашей проблемы:
<?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
индексируется соответствующим номером строки в файле.
Увидеть:
fgetcsv
$_FILES
на веб-сайте документации PHP.