Редактировать определенную строку в файле?
Как можно редактировать определенную строчку в файле? Там записан допустим 0, я получаю ноль с помощью $fil = @file($user); $count = $fil[5]; , теперь мне нужно удалить этот 0 и вместо него записать 1 в файл, т.е. увеличить значение на 1.
Отслеживать
задан 3 мая 2017 в 17:29
3,161 2 2 золотых знака 22 22 серебряных знака 43 43 бронзовых знака
А как выглядит сома строка в файле ? Приводите больше и подробных данных
3 мая 2017 в 17:31
@VanyaAvchyan, просто 0. Больше ничего нет. На других строчках другие данные, поэтому полностью чистить файл нельзя.
3 мая 2017 в 17:36
Отредактируйте вопрос добавив последнюю информацию.я правильно понял : у вас в файле лежат строки разделённые enter(\r\n),и одна строка из них это число 0 ?
3 мая 2017 в 17:41
Если там только одна строка и только одна цифра в этой строке вам будет достаточно функций file_get_contents() и file_put_contents()
3 мая 2017 в 17:43
@VanyaAvchyan, да, строк порядка 100, разделённые \n, и 6 строка это 0. Вот ее нужно увеличивать на единицу при каждом вызове функции.
3 мая 2017 в 17:53
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Предположить у нас есть файл test.txt со следующими строками :
0 a b c d
PHP code:
file_put_contents( $file, $array ); // записываем обратно в файл > visitCounter(); ?>
Отслеживать
ответ дан 3 мая 2017 в 18:11
Vanya Avchyan Vanya Avchyan
4,950 1 1 золотой знак 17 17 серебряных знаков 42 42 бронзовых знака
Предполагаю, что вы знаете номер строки заранее.
index.php
filename.txt
строка0 0 строка2 строка3 строка4
Отслеживать
ответ дан 3 мая 2017 в 18:06
Hlib Ostrikov Hlib Ostrikov
501 3 3 серебряных знака 15 15 бронзовых знаков
Ничего не происходит когда запускаю файл с пхп кодом .А когда вместо
– user216109
3 мая 2017 в 18:32
@Sergey, Новые ошибки уровней E_WARNING и E_NOTICE были добавлены в php 7.1 при использовании некорректных строк с операторами, ожидающими числа (+ — * / ** % << >> | & ^) и их эквивалентами с присваиванием. Ошибка уровня E_NOTICE выдается, когда строка начинается с цифр, но далее содержит не цифровые символы, и ошибка уровня E_WARNING выдается тогда, когда строка вообще не содержит цифр. Так как ваша элемент массива с нулем на самом деле является строкой, где содержится 0 и перенос строки. Это всего лишь предупреждение, на работу скрипта оно не влияет.<>
PHP. Запись строковых данных с новой строки в текстовый файл
Данный материал предоставлен сайтом PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Запись данных с новой строки в текстовый файл.
Представим, что нам необходимо дописать строковые данные в текстовый файл с новой строки, в котором уже содержится какой то текст (информация).
Решением данной задачи является функция file_put_contents.
Первый параметр отвечает за путь к записываемому файлу.
Второй параметр отвечает за записываемые данные (Это может быть строка, массив или stream ресурс).
Третий параметр отвечает за комбинации флагов.
Доступные флаги:
- FILE_USE_INCLUDE_PATH — Ищет путь к запрашиваемому файлу в подключаемых директориях.
- FILE_APPEND — Если файл по запрашиваемому пути уже существует, данные будут дописаны в конец файла вместо того, чтобы его перезаписать.
- LOCK_EX — Устанавливает эксклюзивную блокировку на файл на время записи.
Таким образом, используя данную функцию и флаг FILE_APPEND можно дописать строку в файл.
file_put_contents("/file.txt", PHP_EOL . "text", FILE_APPEND);
Предопределенная константа PHP_EOL, указанная в начале второго параметра, говорит о том, что записываемые данные будут записаны с новой строки.
Таким образом, мы добавляем строку в конец файла вместо того, чтобы его перезаписывать или создавать новый файл.
Как заменить текст в файле?

Как заменить русский текст в файле?
Мне нужно написать функцию,которая заменяет русский текст без учета регистра в файле.Типа void.
Как заменить текст в файле на другой?
Как заменить текст в файле на другой текст который статический ведён текст в программу ? .
Как найти и заменить текст в Memo или в txt-файле?
Как наити и заменить в мемо или в .txt фаиле текст? у меня есть .txt фаил. содержит очин длинний.
Как в непустом Вордовском файле найти необходимый мне текст и заменить его на результат работы программы
Всем доброго времени суток. Суть вопроса такова. На форме, к примеру, 2 баттона с текстом и 1.
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
1 2 3 4 5 6
$f_name = __DIR__ . '/2.php'; $content = file_get_contents($f_name); $content = str_replace('5999', '6000', $content); file_put_contents($f_name, $content);
Добавлено через 46 секунд
Только вы разделом ошиблись =)
Регистрация: 16.07.2012
Сообщений: 728
Сообщение от VNIIAEN 
$content = file_get_contents($f_name);
В этом случае будет замена во всем контенте файла 2.php
и если массив будет состоять не из одной строки, а из нескольких, то замена будет произведена во всех строках
1 2 3 4 5 6
$mpcard[1658] = array (5999,"2,4,6,8,10","белый","пух"); $mpcard[1659] = array (5999,"68-74-80","синий","100%"); $mpcard[1661] = array (4999,"XX,HH","красный","вата"); $mpcard[1649] = array (5999,"68-74-80","синий","100%"); ?>
Как произвести замену только в строке с $mpcard[1659]?
![]()
4877 / 3880 / 1609
Регистрация: 24.04.2014
Сообщений: 11,371
Сообщение от alanat 
Как произвести замену только в строке с $mpcard[1659]?
А для чего это вообще понадобилось?
![]()
3834 / 3182 / 1337
Регистрация: 01.08.2012
Сообщений: 10,788
alanat, не надо так делать. Храните данные в БД или хотя бы в виде JSON-строки и не будет проблем с редактированием.
![]()
4877 / 3880 / 1609
Регистрация: 24.04.2014
Сообщений: 11,371
Сообщение от Jodah 
Храните данные в БД или хотя бы в виде JSON-строки и не будет проблем с редактированием.
можно и как php массив хранить, записывая через var_export. В сочетании с opcache данные будут в памяти лежать.
Регистрация: 16.07.2012
Сообщений: 728
Сообщение от Jewbacabra 
А для чего это вообще понадобилось?
Пытаюсь организовать хранение данных без подключения таблиц.
Добавлено через 5 минут
Сообщение от Jewbacabra 
записывая через var_export
«var_export — выводит или возвращает строковое представление переменной» — т.е. записать всё-таки нельзя, только считать из массива?
Добавлено через 1 минуту
Сообщение от Jewbacabra 
хотя бы в виде JSON-строки
Данные будут на сервере храниться?
![]()
3834 / 3182 / 1337
Регистрация: 01.08.2012
Сообщений: 10,788
Сообщение от alanat 
Данные будут на сервере храниться?
1 2 3 4 5 6 7 8 9 10 11 12 13
$arr = [ 'key1' => 'value1', 'key2' => 'value2' ]; // Запись массива в файл file_put_contents('file.db', json_encode($arr)); // Получение из файла $arr = json_decode(file_get_contents('file.db'), true); var_dump($arr);
![]()
4877 / 3880 / 1609
Регистрация: 24.04.2014
Сообщений: 11,371
Сообщение от alanat 
Пытаюсь организовать хранение данных без подключения таблиц.
Если данные это конфиг, который очень редко меняется и содержит немного данных, то можно без бд работать. В остальных случаях придется столкнуться с множеством проблем, уже решенных в бд.
Сообщение от alanat 
т.е. записать всё-таки нельзя, только считать из массива?
Можно экспортировать php переменную в ее строковое представление, и эту строку записать в php файл вида А потом этот файл подключать $data = include __DIR__.’/my_file.php’;
?php>
Сообщение от alanat 
Данные будут на сервере храниться?
Как реализуешь — так и будет
Регистрация: 16.07.2012
Сообщений: 728
Сообщение от Jewbacabra 
Если данные это конфиг, который очень редко меняется и содержит немного данных, то можно без бд работать
Нет, это не конфиг, периодически меняются. У меня был сайт, где практически ничего не менялось, его я сделал на чистом html+JS. (Тогда я о php ничего вообще не слышал).
Сообщение от Jodah 
file_put_contents(‘file.db’, json_encode($arr));
Сообщение от Jewbacabra 
$data = include __DIR__.’/my_file.php’;
Друзья, чтобы не задавать вам лишних вопросов, покажу непосредственно, что у меня есть, потому как для меня всё новое (на этот раз JSON).
Есть файлы с массовом mp-charact.php, add_img_charact и еще пара подобных.
В шаблон я подставляю данные из этих массивов, например:
1 2 3
include ($_SERVER['DOCUMENT_ROOT'] ."/mp-charact.php"); $imgi = 1659;?> div>img src="$mpcard[$imgi][6] ?>$imgi ?>.jpg" title=" $mpcard[$imgi][5] ?>">div>
И так уже получилось, что весь сайт уже заточен под работу с массивом php, а не с таблицей.
Теперь при необходимости в файлах php необходимо делать изменения с массивах. Это можно делать руками в файлах mp-charact.php и add_img_charact.php. Но в связи с тем, что я решил попробовать сделать что-то вроде маленькой CMS, я рассматриваю разные варианты хранения и изменения хранимых данных.
На сегодняшнем этапе я сделал файл, который считывает данные из файлов с массивами mp-charact.php и add_img_charact.php, потом выводит это на экран, а потом должен изменить данные в массивах. Коротко это выглядит так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
include ($_SERVER['DOCUMENT_ROOT'] ."/mp-charact.php"); include ($_SERVER['DOCUMENT_ROOT'] ."/add_img_charact.php"); ?> form method="POST">button name="newsubmit">Создать карточку товараbutton>form> if ('POST' === $_SERVER['REQUEST_METHOD']) $value = filter_input(INPUT_POST, 'submit', FILTER_VALIDATE_INT); if (false !== $value) { echo '
Карточка товара '
.$value.' ; if (in_array($value, $exist_all)) echo ' checked'; echo '> активировать } ?>
И по нажатию кнопки ОТПРАВИТЬ в файлах mp-charact.php и add_img_charact.php должны меняться значения массивов и так сохраниться в этих файлах.
Сообщение от VNIIAEN 
$content = str_replace(‘5999’, ‘6000’, $content);
Это отчасти решило мой вопрос. Но, как с писал ранее, произойдет замена во всём файле, а не в конкретной строке.
Сообщение от Jodah 
$arr = [
* * ‘key1’ *=> ‘value1’,
* * ‘key2’ *=> ‘value2’
];
Этот же вариант будет выводить данные вертикально ориентированными, что будет неудобно читать при открытии файла. Соответственно при перезаписи в таком же виде они останутся вертикально ориентированными. А представьте, если данных будет много? Например, как сейчас около 100. Удобнее, конечно пользоваться таблицами, но, как я писал ранее, сайт уже ориентирован на работу с конкретными php-файлами и массивами внутри их.
Извините, что так замороченно.
Сообщение от Jodah 
$arr = [
* * ‘key1’ *=> ‘value1’,
* * ‘key2’ *=> ‘value2’
];
А можно записать в файл эти же данные, чтобы выглядело так в файле с массивом (как в mp-charact.php)?
$arr = ['value1','value2'];
Вложения
| MK.rar (3.0 Кб, 0 просмотров) |
Php как перезаписать часть строки из файла
Пока я творю, я живу!
Блог посвящен: HTML, CSS, PHP, WordPress, Bootstrap

![]()
![]()
![]()
![]()
![]()
![]()
Главная » Основы PHP » Работа с файлами-3 (дополнительные функции и возможности). Основы PHP с нуля. Урок №21

Работа с файлами-3 (дополнительные функции и возможности). Основы PHP с нуля. Урок №21
Всем привет!
Продолжаем изучать основы PHP с нуля! В этом уроке я расскажу вам про дополнительные возможности по работе с файлами, а именно:
-проверить наличие файла;
-узнать размер файла;
-создать временный файл;
Проверить наличие файла на php.
Были у меня случаи, когда нужно было проверить кодом наличие файла.
Если и у вас есть необходимость проверить кодом наличие файла, воспользуйтесь функцией — file_exists().
file_exists("название файла")
На практике это будет выглядеть вот так:
else < echo "Файл не существует"; >?>
Если файл « file.txt » существует, то на экране вы увидите сообщение « Файл существует »; если файла такого нет, тогда на экране появится противоположный текст « Файл не существует ».
Вы обратили внимание, что я использовал функцию file_exists() в конструкции if else?
Внимание: Может случиться так, что папка может иметь имя « file.txt » и скрипт воспримет, что файл существует, хотя это не файл, а папка. Поэтому лучше использовать функцию is_file() .
else < echo "Это не файл"; >?>
Узнать размер файла на php
Если нужно узнать размер файла, воспользуйтесь функцией filesize() :
filesize("название файла");
На практике это будет выглядеть вот так:
В результате вы увидите на экране:
Размер файла file.txt — 96 байт
Создание временного файла, сделать в нем запись и вывести содержимое на экран.
Чтобы записать текст во временный файл, воспользуйтесь функцией tmpfile()
tmpfile() – Создаёт временный файл с уникальным именем, открывая его в режиме чтения и записи (w+).
fseek () – указатель положения в файле. Пример:
fseek($stepkinblog, 0);
fread() – Бинарно-безопасное чтение файла. Пример:
fread($stepkinblog, 1024);
1024 – Чтение останавливается при достижении 1024 байтов
В результате вы увидите на экране текст, записанный во временном файле:
Эта строка записывается во временный файл.
Вывести количество строк на экран
Если вам нужно определить количество строк в файле, воспользуйтесь функцией count() .
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!