SplFileObject::fgets
(PHP 5 >= 5.1.0)
SplFileObject::fgets — Gets line from file
Description
public string SplFileObject::fgets
( void
)
Gets a line from the file.
Parameters
This function has no parameters.
Return Values
Returns a string containing the next line from the file, or FALSE
on error.
Errors/Exceptions
Throws a RuntimeException if the file cannot be read.
Examples
Example #1 SplFileObject::fgets() example
This example simply outputs the contents of file.txt line-by-line.
<?php
$file = new SplFileObject("file.txt");
while (!$file->eof()) {
echo $file->fgets();
}
?>
See Also
- fgets() - Gets line from file pointer
- SplFileObject::fgetss() - Gets line from file and strip HTML tags
- SplFileObject::fgetc() - Gets character from file
- SplFileObject::current() - Retrieve current line of file
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Другие базовые расширения
- Стандартная библиотека PHP (SPL)
- Обработка файлов
- Функция SplFileObject::__construct() - Конструктор класса SplFileObject
- Функция SplFileObject::current() - Получение текущей строки файла
- Функция SplFileObject::eof() - Проверяет, достигнут ли конец файла
- Функция SplFileObject::fflush() - Сбрасывает буфер вывода в файл
- Функция SplFileObject::fgetc() - Читает символ из файла
- Функция SplFileObject::fgetcsv() - Получение строки файла и ее разбор в соответствии с CSV разметкой
- Функция SplFileObject::fgets() - Читает строку из файла
- Функция SplFileObject::fgetss() - Получение строки из файла с очисткой от HTML тэгов
- Функция SplFileObject::flock() - Портируемая блокировка файла
- Функция SplFileObject::fpassthru() - Выводит все оставшееся содержимое файла в выходной поток
- Функция SplFileObject::fputcsv() - Выводит поля массива в виде строки CSV
- SplFileObject::fread
- Функция SplFileObject::fscanf() - Разбор строки файла в соответствии с заданным форматом
- Функция SplFileObject::fseek() - Перевод файлового указателя на заданную позицию
- Функция SplFileObject::fstat() - Получает информацию о файле
- Функция SplFileObject::ftell() - Определение текущей позиции файлового указателя
- Функция SplFileObject::ftruncate() - Обрезает файл до заданной длины
- Функция SplFileObject::fwrite() - Запись в файл
- Функция SplFileObject::getChildren() - Метод-заглушка
- Функция SplFileObject::getCsvControl() - Получает символы разделителя и ограничителя для CSV
- Функция SplFileObject::getCurrentLine() - Псевдоним метода SplFileObject::fgets
- Функция SplFileObject::getFlags() - Получает флаги настройки объекта SplFileObject
- Функция SplFileObject::getMaxLineLen() - Получает максимальную длину строки
- Функция SplFileObject::hasChildren() - Класс SplFileObject не имеет наследников
- Функция SplFileObject::key() - Получение номера строки
- Функция SplFileObject::next() - Читает следующую строку
- Функция SplFileObject::rewind() - Перевод файлового указателя в начало файла
- Функция SplFileObject::seek() - Перевод файлового указателя на заданную строку
- Функция SplFileObject::setCsvControl() - Устанавливает символы разделителя и ограничителя для CSV
- Функция SplFileObject::setFlags() - Установливает флаги для SplFileObject
- Функция SplFileObject::setMaxLineLen() - Устанавливает максимальную длину строки
- Функция SplFileObject::__toString() - Псевдоним SplFileObject::current
- Функция SplFileObject::valid() - Проверяет, достигнут ли конец файла (EOF)
Коментарии
Note that this method will cause a PHP fatal error if the file being read contains no recognizable line termination characters and is larger than the allowable memory size for PHP to allocate, i.e. memory_limit set in php.ini or similar. In other words, PHP keeps reading until it finds a line termination, if it runs out of memory first, it will throw a fatal error.
This is different from the file resource fread() function, which allows an optional maximum length argument to be passed to limit this behavior.
Notice that the behavior of fgets after a seek changed on PHP 8.0.10, if you seek to line 50 and run fgets, it will give you line 50, while on PHP 5.1~8.0.0 it would give you line 51:
<?php
$file = new SplTempFileObject();
for ($i = 0; $i < 100; $i++) {
$file->fwrite("Foo $i\n");
}
$file->seek(50);
echo json_encode(array(
array('line' => $file->key(), 'contents' => trim($file->fgets())),
array('line' => $file->key(), 'contents' => trim($file->fgets())),
array('line' => $file->key(), 'contents' => trim($file->fgets())),
), JSON_PRETTY_PRINT);
?>
Results:
PHP 8.0.1+
[
{
"line": 50,
"contents": "Foo 50"
},
{
"line": 50,
"contents": "Foo 51"
},
{
"line": 51,
"contents": "Foo 52"
}
]
PHP 5.1 to 8.0.0
[
{
"line": 50,
"contents": "Foo 51"
},
{
"line": 51,
"contents": "Foo 52"
},
{
"line": 52,
"contents": "Foo 53"
}
]
I forgot to mention in my previous note about PHP PHP 8.0.10, that you can use $file->current(); $file->next(); as a replacement for $file->fgets(); that works consistently from PHP 5.1 to 8.0.1+ after a seek():
<?php
$file = new SplTempFileObject();
for ($i = 0; $i < 100; $i++) {
$file->fwrite("Foo $i\n");
}
$file->seek(50);
print_r(array(
array('line' => $file->key(), 'contents' => trim($file->current()), 'triggerNext' => $file->next()),
array('line' => $file->key(), 'contents' => trim($file->current()), 'triggerNext' => $file->next()),
array('line' => $file->key(), 'contents' => trim($file->current()), 'triggerNext' => $file->next()),
));
?>
PHP 5.1 to 8.0.1+:
[
{
"line": 50,
"contents": "Foo 50"
},
{
"line": 51,
"contents": "Foo 51"
},
{
"line": 52,
"contents": "Foo 52"
}
]