Php как перезаписать часть строки из файла
Перейти к содержимому

Php как перезаписать часть строки из файла

  • автор:

Редактировать определенную строку в файле?

Как можно редактировать определенную строчку в файле? Там записан допустим 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]?

Эксперт PHP

4877 / 3880 / 1609
Регистрация: 24.04.2014
Сообщений: 11,371

ЦитатаСообщение от alanat Посмотреть сообщение

Как произвести замену только в строке с $mpcard[1659]?
А для чего это вообще понадобилось?

Эксперт PHP

3834 / 3182 / 1337
Регистрация: 01.08.2012
Сообщений: 10,788

alanat, не надо так делать. Храните данные в БД или хотя бы в виде JSON-строки и не будет проблем с редактированием.

Эксперт PHP

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-строки
Данные будут на сервере храниться?

Эксперт PHP

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);

Эксперт PHP

4877 / 3880 / 1609
Регистрация: 24.04.2014
Сообщений: 11,371

ЦитатаСообщение от alanat Посмотреть сообщение

Пытаюсь организовать хранение данных без подключения таблиц.

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

ЦитатаСообщение от alanat Посмотреть сообщение

т.е. записать всё-таки нельзя, только считать из массива?

Можно экспортировать php переменную в ее строковое представление, и эту строку записать в php файл вида А потом этот файл подключать $data = include __DIR__.’/my_file.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

Работа с файлами-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!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *