- 4.11. Определение количества строк в файле
- 4.12. Случайный вывод из файла
- 4.13. Сортировка содержимого текстового файла
- Как подсчитать количество строк в файле PHP?
- Создадим функцию для подсчёта количество строк в файле PHP
- Сколько строк файле php
- Работа с файлами-3 (дополнительные функции и возможности). Основы PHP с нуля. Урок №21
4.11. Определение количества строк в файле
Обычно файлы, с которыми приходится иметь дело Web-разработчикам, являются текстовыми. Такие файлы, как правило, обрабатываются построчно, и одной из распространенных для них является операция подсчета количества строк в файле. Самым простым решением проблемы будет разбивка содержимого файла на строки при помощи стандартной функции file() , которая принимает в качестве аргумента имя файла и возвращает массив, каждый элемент которого содержит отдельную строку файла. После этого для подсчета строк в файле остается только подсчитать количество элементов полученного массива (листинг 4.33). Листинг 4.33. Определение количества строк в файле ?> Решение, представленное в листинге 4.33, успешно работает в том случае, если размер текстового файла не превышает размера оперативной памяти, отводимой скрипту. В противном случае для подсчета количества строк в файле следует прибегать к файловому дескриптору (листинг 4.34). Листинг 4.34. Альтернативное решение
230 | Глава 4 |
// Проверяем корректность открытия файла if(!$fd) return «невозможно открыть файл»; $count = 0; while(($line = fgets($fd)) !== false) $count++; // Возвращаем количество строк в файле return $count; > ?> Функция getlinecount() не загружает содержимое файла в оперативную память, а последовательно считывает строку за строкой. Поэтому в каждый момент времени объем, занимаемый скриптом, не критичен.
4.12. Случайный вывод из файла
Пусть имеется текстовый файл text.txt (листинг 4.35), и стоит задача вывести любую выбранную в случайном порядке строку. Листинг 4.35. Содержимое файла text.txt PHP С++ Java Ruby Python Perl JavaScript Visual Basic Fortran Pascal Assembler Lisp Haskell C# Для решения данной задачи необходимо использование функции rand() , которая имеет следующий синтаксис: rand([$min, $max]) Функция генерирует случайное целое число между двумя целочисленными параметрами $min и $max . Если необязательные параметры $min и $max не указаны, число будет расположено между 0 и значением RAND_MAX (равным 32 768). Скрипт, осуществляющий случайный вывод из файла, представлен в листинге 4.36.
4.13. Сортировка содержимого текстового файла
Одной из распространенных задач при работе с текстовыми файлами является сортировка содержимого файла. Для тестирования сортировки подготовим вспомогательный скрипт, перемешивающий записи файла в случайном порядке. Для этого строки извлекаются при помощи функции file() , а затем перемешиваются при помощи функции shuffle() (листинг 4.37). Листинг 4.37. Перемешивание записей в файле ?> При помощи функции array_walk() и функции обратного вызова trim_array() каждый элемент промежуточного массива $lines пропускается через функцию trim() ,?php>
232 | Глава 4 |
которая удаляет возможные пробельные символы в начале и конце строки, в том числе и символы перевода строки. В результате работы скрипта из листинга 4.37 файл text.txt может выглядеть так, как это представлено в листинге 4.38. Листинг 4.38. Записи файла text.txt в случайном порядке C# Ruby Assembler Haskell Java Pascal JavaScript Python Visual Basic Perl PHP C++ Lisp Fortran Для сортировки полученного файла достаточно разбить его содержимое на строки при помощи функции file() и отсортировать полученный массив стандартной функцией sort() или rsort() , в прямом или обратном порядке (листинг 4.39). Листинг 4.39. Сортировка записей файла text.txt по индексу ?>
Как подсчитать количество строк в файле PHP?
Возможно, Вы уже столкнулись с задачей подсчёта общего количества строк в файле. Неважно, нужно подсчитать количество служебных записей в файле, узнать количество строк htaccess или записей txt-файла, хранящего в себе какие-либо данные. Указанные ниже способы решения подойдут для каждого случая.
Создадим функцию для подсчёта количество строк в файле PHP
Создаваемая функция будет использовать две встроенные:
1. file() в качестве аргумента принимает файл или путь к нему, а возвращает массив строк
2. count() подсчитывает количество элементов массива.
Теперь переходим к созданию файла с самой функцией. В корневой директории (вы можете на своё усмотрение выбрать другую) создаём отдельную папку include. В ней создадим файл будущей функции и назовём его functions.php. Далее вставляем в него указанный ниже код.
Код PHP (файл functions.php)
function lines($file)
<
// в начале ищем сам файл. Может быть, путь к нему был некорректно указан
if(!file_exists($file))exit("Файл не найден");
// рассмотрим файл как массив
$file_arr = file($file);
// подсчитываем количество строк в массиве
$lines = count($file_arr);
// вывод результата работы функции
return $lines;
>
echo lines("index.php"); // выводим число - количество строк в файле index.php
?>
Итак, файл с функцией готов. В корневой директории (папке) можем уже создать рабочий файл с любым названием (в примере его назвал example.php), а в нём данную функцию будем подключать следующим образом.
Код PHP (файл example.php)
// здесь указываем путь к файлу с функцией
include_once "include/functions.php"; // или "functions.php" если функция в той же папке, что и рабочий файл exemaple.php
// в переменную $count_lines сохраняем количество строк (число)
$count_lines = lines("index.php");
// выводим результат работы функции подсчёта строк
echo "Строк в файле: ".$count_lines;
?>
В результате отобразит примерно следующий текст
Строк в файле: 52
Можно рассмотреть пример короче без создания функции. В нём уже не будет никакой проверки на наличие файла
Код PHP (вставляете в любой файл php)
$file = "file.txt"; // указываем сам файл и путь к нему
$lines = count(file($file)); // высчитываем количество строк
echo "В файле $file количество строк $lines"; // отображаем результат
?>
В файле file.txt количество строк 20
Спасибо за внимание!
Сколько строк файле php
Пока я творю, я живу!
Блог посвящен: HTML, CSS, PHP, WordPress, Bootstrap
Главная » Основы PHP » Работа с файлами-3 (дополнительные функции и возможности). Основы PHP с нуля. Урок №21
Работа с файлами-3 (дополнительные функции и возможности). Основы PHP с нуля. Урок №21
Всем привет!
Продолжаем изучать основы PHP с нуля! В этом уроке я расскажу вам про дополнительные возможности по работе с файлами, а именно:
-проверить наличие файла;
-узнать размер файла;
-создать временный файл;
Проверить наличие файла на php.
Были у меня случаи, когда нужно было проверить кодом наличие файла.
Если и у вас есть необходимость проверить кодом наличие файла, воспользуйтесь функцией — file_exists().
file_exists("название файла")
На практике это будет выглядеть вот так:
Если файл « file.txt » существует, то на экране вы увидите сообщение « Файл существует »; если файла такого нет, тогда на экране появится противоположный текст « Файл не существует ».
Вы обратили внимание, что я использовал функцию file_exists() в конструкции if else?
Внимание: Может случиться так, что папка может иметь имя « file.txt » и скрипт воспримет, что файл существует, хотя это не файл, а папка. Поэтому лучше использовать функцию is_file() .
Узнать размер файла на php
Если нужно узнать размер файла, воспользуйтесь функцией filesize() :
На практике это будет выглядеть вот так:
В результате вы увидите на экране:
Размер файла file.txt — 96 байт
Создание временного файла, сделать в нем запись и вывести содержимое на экран.
Чтобы записать текст во временный файл, воспользуйтесь функцией tmpfile()
tmpfile() – Создаёт временный файл с уникальным именем, открывая его в режиме чтения и записи (w+).
fseek () – указатель положения в файле. Пример:
fread() – Бинарно-безопасное чтение файла. Пример:
1024 – Чтение останавливается при достижении 1024 байтов
В результате вы увидите на экране текст, записанный во временном файле:
Эта строка записывается во временный файл.
Вывести количество строк на экран
Если вам нужно определить количество строк в файле, воспользуйтесь функцией count() .
В результате вы увидите на экране вот такой текст:
Результат «1», так как в файле « file.txt » только одна строка.
Как вывести часть строки PHP?
Если вам нужно вывести только часть строки, воспользуйтесь функцией substr() :
substr("текст", начинающая_позиция, длина_текста);
Так как отсчет в тексте начался с « 4 » и длину текста я указал « 1 », то результат на экране будет:
Можно добавить в конце какие-то символы показывающие, что должно быть продолжение в тексте, например, троеточие (…) .
Как вывести определенную строку из файла на PHP?
Если вам нужно вывести определенную строку из файла на PHP, тогда воспользуйтесь вот такой конструкцией:
Если в файле « file.txt » содержится две строки, тогда на экране вы увидите вторую строку.
file() — Читает содержимое файла и помещает его в массив
$fopen[1] – если у вас возник вопрос, что это такое, тогда вам следует вернуться и повторить урок массивы php.
Полный пример с записью текста в файл:
В результате на экране вы увидите:
Как удалить определенную строку из файла на PHP?
Если вам нужно удалить любую строку в файле, воспользуйтесь вот такой конструкцией:
Давайте в примере создадим файл, сделаем там запись в три строки и потом удалим любую из строк и все это сделаем через код php:
2 строка. - stepkinblog.ru
3 строка. Я рад"; // открываем файл, если файл не существует, //делается попытка создать его $fp = fopen("stepkinblog-ru.txt", "w"); // записываем в файл текст fwrite($fp, $text); // закрываем файл fclose($fp); $num_stroka = 1; //Удалим 2 строку из файла $file = file("stepkinblog-ru.txt"); // Считываем весь файл в массив unset($file[$num_stroka]); //удаление 2 строки $fp = fopen("stepkinblog-ru.txt", "w"); fputs($fp, implode("", $file)); fclose($fp); // выводим содержание файла на экран браузера readfile("stepkinblog-ru.txt"); ?>
2 строка. - stepkinblog.ru
3 строка. Я рад"; // открываем файл, если файл не существует, //делается попытка создать его $fp = fopen("stepkinblog-ru.txt", "w"); // записываем в файл текст fwrite($fp, $text); // закрываем файл fclose($fp); $file = file("stepkinblog-ru.txt"); // Считываем весь файл в массив unset($file[1]); //удаление 2 строки $fp = fopen("stepkinblog-ru.txt", "w"); fputs($fp, implode("", $file)); fclose($fp); // выводим содержание файла на экран браузера readfile("stepkinblog-ru.txt"); ?>
В чем разница этих двух вариантов? Предлагаю поискать самостоятельно для лучшего изучения кода.
Итак, результат на экране будет таким:
1 строка. Я рад вас видеть на блоге stepkinblog.ru
3 строка. Я рад
Еще раз повторюсь, что отсчет начинается с нуля, то есть, если бы вы захотели удалить первую строку, то нужно было прописать в массиве « 0 »:
unset($file[0]); //удаление 1 строки
$num_stroka = 0; //Удалим 1 строку из файла $file = file("stepkinblog-ru.txt"); // Считываем весь файл в массив unset($file[$num_stroka]); //удаление 1 строки
Я думаю, всем ясно. Двигаемся дальше.
Как очистить файл на PHP?
Если вам нужно очистить всё содержимое файла, тогда воспользуйтесь функцией ftruncate().
ftruncate (дескриптор_файла, размер_файла)
— дескриптор_файла — это имя файл, который нужно очистить (файл должен быть открыт для записи « fopen() »);
— размер_файла – это размер файла, до которого он будет обрезан. Значение «0», файл будет полностью стертый.
В результате, если файл « stepkinblog-ru.txt » был чем-то заполнен, то после запуска скрипта файл будет пустым. Не верите? Проверьте. Откройте файл « stepkinblog-ru.txt ».
Как узнать дату последнего изменения на PHP?
Чтобы узнать дату последнего изменения файла, используйте функцию filemtime() .
В последний раз файл stepkinblog-ru.txt был изменен: February 11 2019 13:14:13.
На сегодня все!
Подписывайтесь на обновления блога stepkinblog.ru, если не хотите пропустить уроки по основам PHP!