- Вывести первую строку с файла
- Решение
- Запись и чтение файлов в PHP
- Сохранение данных в файл
- Функция file_put_contents()
- Функции fopen() / fwrite()
- Дописать строку в начало файла
- Дописать строку в конце файла
- Записать массив в файл
- Функция serialize()
- Функция json_encode()
- Чтение из файла
- Чтение из файла в массив
- Чтение файла в браузер
- Получить первую строку из файла
- Получить последнюю строку из файла
- Запись и чтение файлов в PHP
- Сохранение в файл
- File_put_contents:
- Fopen / fwrite:
- Возможные режимы fopen():
- Дописать строку в начало файла
- Дописать строку в конец файла
- Чтение из файла
- Чтение всего файла
- Чтение файла в массив
- Чтение файла сразу в браузер
- Получить первую строку из файла
- Первые три строки из файла:
- Получить последнюю строку из файла
- Последние три строки из файла:
- Запись и чтение массивов в файл
- Serialize
- Запись:
- Чтение:
- JSON
- Запись:
- Чтение:
Вывести первую строку с файла
Как бы вывести саму строку из файла это не проблемно. Но вот у меня немного другая ситуация. Я сканирую все файлы из директории и вывожу их. И тут начинаются проблемы. Вообщем, подскажите, что не так.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
$dir = "Slist/1/"; //задаём имя директории if(is_dir($dir)) { //проверяем наличие директории echo $dir.' - директория существует;
'; $files = scandir($dir); //сканируем (получаем массив файлов) array_shift($files); // удаляем из массива '.' array_shift($files); // удаляем из массива '..' for($i=0; $isizeof($files); $i++) { $onelist=file('$dir.$files[$i]'); echo '-файл: .$dir.$files[$i].'" title="открыть/скачать файл или страницу">'.echo $onelist[0].';
'; //выводим все файлы } } else echo $dir.' -такой директории нет;
'; ?>
Вывести первую строку с html файла
Всем привет ! Нужно вывести первую строку с каждого *.html файла в папке (желательно без тегов).
Прочитать из файла первую строку
Доброго времени суток. Как прочитать из файла первую строку? Пробовал так: $handle =.
Нужно прочитать из текстового файла определённую строку (не первую)
Люди, спасайте. Перерыл весь инет, никак найти не могу. В книге у меня какой-то бред написан. Нужно.
Вывести строку из файла
Навеяло отсюда: https://www.cyberforum.ru/php-beginners/thread467113.html А можно ли сделать так.
Сообщение было отмечено Coder_done как решение
Решение
Зачем тут стоит вторая функция echo? Ее нужно убрать.
Вот тут вообще непонятно что. Во-первых зачем брать в кавычки, причем одинарные? Покажу на примере:
$a = "Hello"; echo '$a'; // вывод - $a echo "$a"; // вывод - Hello // но зачем брать в кавычки если можно просто: echo $a; // вывод - Hello
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
$dir = "Slist/1/"; //задаём имя директории if(is_dir($dir)) { //проверяем наличие директории echo $dir.' - директория существует;
'; $files = scandir($dir); //сканируем (получаем массив файлов) array_shift($files); // удаляем из массива '.' array_shift($files); // удаляем из массива '..' for($i=0; $isizeof($files); $i++) { $onelist=file($dir.$files[$i]); echo '-файл: .$dir.$files[$i].'" title="открыть/скачать файл или страницу">'.$onelist[0].';
'; //выводим все файлы } } else echo $dir.' -такой директории нет;
'; ?>
Запись и чтение файлов в PHP
Не пропусти свежие посты, подпишись:
Сохранение данных в файл
Самым простым способом записи данных файл, является вызов функции file_put_contents(). Функция принимает 3 аргумента, путь к файлу, данные и флаг позволяющий немного изменить поведение функции. Она записывает содержание переменной в файл. Если файл не найден, то она попытается его создать, если же файл существует, то по умолчанию, функция полностью перезапишет данные в нём. Чтобы изменить это, следует третьим аргументом передать флаг FILE_APPEND , тогда данные будут дописаны в конец файла.
Функция file_put_contents()
$data = 'Некоторые данные для сохранения а файл ' . date('d.m.Y H:i:s') . "\n"; $filePath = __DIR__ . '/log.txt'; file_put_contents($filePath, $data);
Функции fopen() / fwrite()
Функции fopen(), fwrite(), fclose() связаны предназначены для гибкой работы с файлами.
- fopen() — открытие или создание файла.
- fwrite() — запись данных.
- fclose() — закрытие файла.
$data = 'Некоторые данные для сохранения а файл ' . date('d.m.Y H:i:s') . "\n"; $filePath = __DIR__ . '/log.txt'; $fh = fopen($filePath, 'w'); fwrite($fh, $data); fclose($fh);
Дописать строку в начало файла
$addData = 'Дополнительные данные ' . date('d.m.Y H:i:s') . "\n"; $filePath = __DIR__ . '/log.txt'; //Пример с предварительным получением содержимого существующего файла $currentLog = file_get_contents($filePath); file_put_contents($filePath, $addData . $currentLog);
Дописать строку в конце файла
$addData = 'Дополнительные данные ' . date('d.m.Y H:i:s') . "\n"; $filePath = __DIR__ . '/log.txt'; //Пример с флагом file_put_contents($filePath, $addData, FILE_APPEND );
$addData = 'Дополнительные данные ' . date('d.m.Y H:i:s') . "\n"; $filePath = __DIR__ . '/log.txt'; $fh = fopen($filePath, 'a'); fwrite($fh, $data); fclose($fh);
Записать массив в файл
При записи массивов в файл их предварительно нужно преобразовать в строку, путём сериализации массива или же конвертированию в JSON.
Функция serialize()
$arr = ['foo', 'bar', 'hallo', 'world']; $text = base64_encode(serialize($arr)); file_put_contents(__DIR__ . '/log.txt', $text);
Функция json_encode()
$arr = ['foo', 'bar', 'hallo', 'world']; $text = json_encode($arr, JSON_UNESCAPED_UNICODE); file_put_contents(__DIR__ . '/log.json', $text);
Чтение из файла
$filePath = __DIR__ . '/log.txt'; $log = file_get_contents($filePath); echo $log;
$log = ''; $fh = fopen($filePath, 'r'); while (!feof($fh)) < $line = fgets($fh); $log .= $line . "\n"; >fclose($fh); echo $log;
Чтение из файла в массив
Если файл содержит данные подразумевающие дальнейшую конвертацию в массив для удобства работы, вы можете использовать готовую функцию file(). Функция принимает 3 аргумента, обязательный путь к файлу и необязательные, флаг влияющий на поведение функции при чтении файла, а так же контекст.
- FILE_USE_INCLUDE_PATH — функция ищет файл в include_path
- FILE_IGNORE_NEW_LINES — Пропускать новую строку в конце каждого элемента массива
- FILE_SKIP_EMPTY_LINES — Пропускать пустые строки
$filePath = __DIR__ . '/log.txt'; $arr = file($filePath); print_r($arr);
Чтение файла в браузер
$filePath = __DIR__ . '/log.txt'; readfile($filePath);
Получить первую строку из файла
$filePath = __DIR__ . '/log.txt'; $fh = fopen($filePath, 'r'); echo fgets($fh); fclose($fh);
$filePath = __DIR__ . '/log.txt'; $arr = file($filePath); echo $arr[0];
$filePath = __DIR__ . '/log.txt'; $arr = file($filePath); $line3 = array_slice($arr, 0, 3); //получаем первые 3 строки print_r($line3);
Получить последнюю строку из файла
Тут всё основано на преобразовании содержимого файла в массив и дальнейшее его чтение по индексам.
$filePath = __DIR__ . '/log.txt'; $arr = file($arr); $lastLine = array_slice($array, -1); echo $lastLine[0];
Получим последние 3 строки из файла
$filePath = __DIR__ . '/log.txt'; $arr = file($arr); $last3 = array_slice($array, -3); print_r($last3);
Надеюсь пост был вам полезен! Удачи! )
Не пропусти свежие посты, подпишись:
Запись и чтение файлов в PHP
Примеры сохранения и чтения текстовых данных и массивов в файлы.
Сохранение в файл
Функция file_put_contents() записывает содержимое переменной в файл, если файла не существует. то пытается его создать, если существует то полностью перезапишет его.
File_put_contents:
$text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $filename = __DIR__ . '/file.txt'; file_put_contents($filename, $text);
Fopen / fwrite:
Набор функций fopen, fwrite, fclose предназначены для более гибкой работы с файлами.
- fopen – открытие или создание файла.
- fwrite – запись данных.
- fclose – закрытие файла.
$text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $filename = __DIR__ . '/file.txt'; $fh = fopen($filename, 'w'); fwrite($fh, $text); fclose($fh);
Возможные режимы fopen():
Mode | Описание |
---|---|
r | Открывает файл только для чтения, помещает указатель в начало файла. |
r+ | Открывает файл для чтения и записи, помещает указатель в начало файла. |
w | Открывает файл только для записи, помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует – пробует его создать. |
w+ | Открывает файл для чтения и записи, помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует – пытается его создать. |
a | Открывает файл только для записи, помещает указатель в конец файла. Если файл не существует – пытается его создать. |
a+ | Открывает файл для чтения и записи, помещает указатель в конец файла. Если файл не существует – пытается его создать. |
x | Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт false и выдаст ошибку. Если файл не существует, попытается его создать. |
x+ | Создаёт и открывает для чтения и записи, в остальном имеет то же поведение, что и « x ». |
c | Открывает файл только для записи. Если файл не существует, то он создаётся. Если же файл существует, то он не обрезается (в отличие от « w »), и вызов к этой функции не вызывает ошибку (также как и в случае с « x »). Указатель на файл будет установлен на начало файла. |
c+ | Открывает файл для чтения и записи, в остальном имеет то же поведение, что и « c ». |
Доступно в место fwrite() используют fputs() , разницы ни какой т.к. эта функция является псевдонимом.
Дописать строку в начало файла
$new_str = 'New line of text.'; $filename = __DIR__ . '/file.txt'; $text = file_get_contents($filename); file_put_contents($filename, $new_str . PHP_EOL . $text);
Дописать строку в конец файла
$new_str = 'New line of text.'; $filename = __DIR__ . '/file.txt'; file_put_contents($filename, PHP_EOL . $new_str, FILE_APPEND);
$new_str = 'New line of text.'; $filename = __DIR__ . '/file.txt'; $fh = fopen($filename, 'c'); fseek($fh, 0, SEEK_END); fwrite($fh, PHP_EOL . $new_str); fclose($fh);
Чтение из файла
Чтение всего файла
$filename = __DIR__ . '/file.txt'; $text = file_get_contents($filename); echo $text;
$filename = __DIR__ . '/file.txt'; $text = ''; $fh = fopen($filename, 'r'); while (!feof($fh)) < $line = fgets($fh); $text .= $line . PHP_EOL; >fclose($fh); echo $text;
Чтение файла в массив
Функция file() – читает содержимое файла и помещает его в массив, доступны опции:
- FILE_IGNORE_NEW_LINES – пропускать новую строку в конце каждого элемента массива.
- FILE_SKIP_EMPTY_LINES – пропускать пустые строки.
$filename = __DIR__ . '/file.txt'; $array = file($filename); print_r($array);
Чтение файла сразу в браузер
$filename = __DIR__ . '/file.txt'; readfile($filename);
Получить первую строку из файла
$filename = __DIR__ . '/file.txt'; $fh = fopen($filename, 'r'); echo fgets($fh); fclose($fh); /* или */ $filename = __DIR__ . '/file.txt'; $array = file($filename); echo $array[0];
Первые три строки из файла:
$filename = __DIR__ . '/file.txt'; $array = file($filename); $first_3 = array_slice($array, 0, 3); print_r($first_3);
Получить последнюю строку из файла
$filename = __DIR__ . '/file.txt'; $array = file($filename); $last = array_slice($array, -1); echo $last[0];
Последние три строки из файла:
$filename = __DIR__ . '/file.txt'; $array = file($filename); $last_3 = array_slice($array, -3); print_r($last_3);
Запись и чтение массивов в файл
Serialize
Не очень удачное хранение данных в сериализованном виде т.к. изменение одного символа может привести к ошибке чтения всех данных в файле. Подробнее в статье «Функция serialize, возможные проблемы»
Запись:
$array = array('foo', 'bar', 'hallo', 'world'); $text = base64_encode(serialize($array)); file_put_contents(__DIR__ . '/array.txt', $text);
Чтение:
$array = unserialize(base64_decode($text)); print_r($array);
JSON
Запись:
$array = array('foo', 'bar', 'hallo', 'world'); $json = json_encode($array, JSON_UNESCAPED_UNICODE); file_put_contents(__DIR__ . '/array.json', $json);
Чтение:
$json = file_get_contents(__DIR__ . '/array.json'); $array = json_decode($json, true); print_r($array);