Загружаем и читаем данные из файла построчно


Допустим нам надо загрузить текстовый файл на сервер и прочитать его содержимое. Это не обязательно должен быть TXT это может быть, например CSV данные из которого мы в последствии хотим записать в базу данных.

И так для начала создаем простую HTML форму для загрузки файла на сервер:

<form method="post" action="file.php" enctype="multipart/form-data">
<label for="filename">ФАЙЛ:</label>
<input id="filename" type="file" name="filename">
<input class="btn btn-default" type="submit" value="Загрузить" />
</form>

Внимание на enctype="multipart/form-data" – без этого в теге FORM наш файл просто не загрузится

Далее в файле php который будет принимать и обрабатывать файл пишем следующее:

<?php
 //Читаем полученный файл
 $res = file_get_contents($_FILES['filename']['tmp_name']); 
 //Разбиваем на массив использую 
 //как разделитель символы переноса строки 
 $lines = explode("\r\n", $res);
 //В цикле выводим и нумеруем 
 //строки нашего документа
 foreach ($lines as $key=>$val)
 {
    echo "Строка $key:". $val . "<br/>";
 }

Мы получили в переменную $lines массив строк которые теперь можно обрабатывать как душе угодно, например если обрабатываете файл CSV с прайсом где в качестве разделителя ячеек используете «;»

Так же можно воспользоваться классом для чтения больших файлов на php

#php

Copyright © 2019