Подскажите пожалуйста, как заменить в текстовом файле одну строку на своё значение?
Где-то был у меня маленький кусок кода в пару строк, как это делается, но не могу найти, а в поиске предлагают всё не то, что-то у них у всех очень массивное получается.
Надо просто взять номер строки из файла и переписать эту строку на то что нужно.
# Sitego (29.10.2016 / 19:31)
Подскажите пожалуйста, как заменить в текстовом файле одну строку на своё значение?
Где-то был у меня маленький кусок кода в пару строк, как это делается, но не могу найти, а в поиске предлагают всё
По такому принципу
$file = 'file.txt';
$arr = file($file);
// 3 - это номер строки, в которой надо произвести замену
$arr[3] = 'Новое значение'. PHP_EOL;
file_put_contents($file, $arr);
ДоХтор, спасибо, вот это мне и нужно было, а то на разных форумах для простой замены строки предлагают скрипты огромного размера. Наверное такие же специалисты как и я

Я же помню что там в коде, который у меня где-то записан, всего несколько строк было.
Sitego, там только номер строки начинает отсчёт от нуля (в массиве) , поэтому если требуется замена 4-ой строки в файле, то ключ массива будет под номером 3-и.
ДоХтор, это я уже понял, потому что со старта не та строка заменилась))
# Sitego (29.10.2016 / 20:11)
ДоХтор, это я уже понял, потому что со старта не та строка заменилась))
Можно код немного допилить, чтобы к примеру, ты мог вводить номер перезаписываемой строки, не беспокоясь о смещении. Или если тебе не раз придётся пользоваться этим кодом, то лучше написать функцию, в которую передавать нужные параметры. Например:
<?php
$file = 'file.txt';
$text = 'Новое значение';
$numb = 3;
if (records($file, $numb, $text)) {
echo 'Строка №'. $numb .' перезаписана!';
}
/**
* Замена строки в текст.файле по её номеру
*
* @param $file Ссылка на текст.файл
* @param $numb Номер заменяемой строки
* @param $text Новый текст
*
* @return Количество записанных байт
*/
function records($file, $numb, $text) {
$arr = file($file);
$arr[--$numb] = $text . PHP_EOL;
return file_put_contents($file, $arr);
}
ДоХтор, спасибо, пригодится может когда-то, но не сейчас. Код в заметки
.gif)
Мне и первый код вполне подходит, там всего несколько строк перезаписывать в конфиге раз в сутки. Поскольку это всё через скрипт, то разницы нет как считать, с нуля или с единицы.
Помогите исрпавить таблицу
CREATE TABLE IF NOT EXISTS `forum_p` (
`id` int(20) NOT NULL,
`id_r` int(20) NOT NULL,
`id_pr` int(20) NOT NULL,
`msg` blob,
`type` int(20) NOT NULL,
`id_us` int(20) NOT NULL,
`time` bigint(30) DEFAULT NULL,
`id_thema` int(11) DEFAULT NULL,
`cit` int(11) NOT NULL,
`del` int(5) NOT NULL DEFAULT '0',
`up` int(5) NOT NULL DEFAULT '0'
) ENGINE=Aria DEFAULT CHARSET=cp1251 PACK_KEYS=0 PAGE_CHECKSUM=0 TRANSACTIONAL=0;
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PAGE_CHECKSUM=0 TRANSACTIONAL=0' at line 13
# MARAZM (02.11.2016 / 10:11)
Помогите исрпавить таблицу
CREATE TABLE IF NOT EXISTS `forum_p` (
`id` int(20) NOT NULL,
`id_r` int(20) NOT NULL,
`id_pr` int(20) NOT NULL,
`msg` blob,
`type` int(20) NOT NULL,
`id_us`
http://stackoverflow.com/quest ... -1064
If you are not using MariaDB, change ENGINE=Aria to ENGINE=MyISAM(or ENGINE=InnoDB) and remove PAGE_CHECKSUM=1 and TRANSACTIONAL =1;
# Simba (02.11.2016 / 10:57)
http://stackoverflow.com/quest ... -1064
If you are not using MariaDB, change ENGINE=Aria to ENGINE=MyISAM(or ENGINE=InnoDB) and remove PAGE_CHECKSUM=1 and TRANSAC
не помогло...ну да ладно так для теста)