Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/55: Рейтинг темы: голосов - 55, средняя оценка - 4.64
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777

Как заменить текст в файле?

02.11.2018, 22:41. Показов 12331. Ответов 27

Студворк — интернет-сервис помощи студентам
Добрый день.
Мне необходимо поменять в файле 2.php чуть-чуть текста. И вроде бы всё просто, но не получается.
Файл 1.php:
PHP
1
2
3
4
5
<?php
$file = fopen($_SERVER['DOCUMENT_ROOT'].'/2.php', 'r+');
fwrite($file, str_replace('5999', '6000', '$mpcard[1659] = array (5999,"68-74-80","синий","100%");'));
fclose($file);
?>
Файл 2.php:
PHP
1
2
3
<?php
$mpcard[1659] = array (5999,"68-74-80","синий","100%");
?>
Как правильно сделать замену 5999 -> 6000 ?
Заранее благодарен за ответ.
P.S. надеюсь, "68-74-80","синий","100%" можно будет по аналогии заменить.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2018, 22:41
Ответы с готовыми решениями:

Как заменить русский текст в файле?
Мне нужно написать функцию,которая заменяет русский текст без учета регистра в файле.Типа void repl(char* file,char* str1,char* str2)

Как заменить текст в файле на другой?
Как заменить текст в файле на другой текст который статический ведён текст в программу ? Добавлено через 49 секунд Как тут только...

Как найти и заменить текст в Memo или в txt-файле?
Как наити и заменить в мемо или в .txt фаиле текст? у меня есть .txt фаил... содержит очин длинний текст... как наити в нём конкретний...

27
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
08.11.2018, 07:57  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от estic Посмотреть сообщение
поле id_act нужно объявить индексируемым
Как это сделать?

Цитата Сообщение от estic Посмотреть сообщение
Первичный ключ, кстати, объявили явно
Что это значит?

Цитата Сообщение от estic Посмотреть сообщение
экономичность при хранении
Установил для on/off VARCHAR и 3 символа. Полагаю, когда позиций несколько сотен, то это не очень влияет на экономичность? Или не так?
0
1319 / 1011 / 232
Регистрация: 01.10.2018
Сообщений: 3,928
08.11.2018, 12:10
Цитата Сообщение от alanat Посмотреть сообщение
Как это сделать?
Цитата Сообщение от alanat Посмотреть сообщение
Что это значит?
Это тоже относится к основам. Почитайте про первичный ключ, уникальный индекс и просто индекс.

Цитата Сообщение от alanat Посмотреть сообщение
Установил для on/off VARCHAR и 3 символа. Полагаю, когда позиций несколько сотен, то это не очень влияет на экономичность? Или не так?
Как я выше написал, причин много. Это не только экономичность. Например, представьте, что вам понадобилось переименовать состояния или перевести их названия на другой язык, и сравните объем работ при использовании числовых кодов и без. Или представьте, что одновременно нужны названия на разных языках. Использование типа VARCHAR и коротких значений лишь немного улучшает ситуацию. Но, как я написал выше, у вас полно "ненормализованных" полей. Одно обрезанное на скриншоте cat... чего стоит! Если вам кажется, что, кодируя значения, вы теряете удобство при работе с таблицами в исходном виде, можете завести специальное поле для заметок. Но в базах данных предусмотрен механизм автоматического связывания кодируемых полей с таблицами, содержащими расшифровку значений. Оболочки для работы с базами данных могут поддерживать режим, при котором вместо кодов автоматически отображаются соответствующие им названия. Кроме того, жесткое связывание, поддерживаемое непосредственно СУБД, позволяет контролировать значения, т.е. у вас не получится установить у поля значение, отсутствующее в привязанной к этому полю таблице. И тем более не получится допустить ошибку в названии, например случайно приписать к названию категории пробел.
1
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
10.11.2018, 11:08  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
var_dump($arr);
Почему первый var_dump выводит полностью массив, а второй var_dump только последнюю часть массива?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$mpcard[1603] = array (5999,"68-74-80","синий","100% лебяжий пух");
$mpcard[1607] = array (7500,"S,M,L,XL,XXL","малиновый","100% лебяжий пух");
$mpcard[1608] = array (7500,"S,M,L,XL,XXL","золотистый","100% лебяжий пух");
$mpcard[1659] = array (7500,"S,M,L,XL,XXL","золотистый","100% лебяжий пух");
 
var_dump($mpcard); // выводит полностью массив
echo '<br>'.'<br>'.'<br>';
 
$connection = mysql_connect ("localhost","root",""); // подключение к mysql
$db = mysql_select_db ("monkid"); //выбор базы данных monkid
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");
if(!$connection || !$db) {exit(mysql_error());}
 
$result=mysql_query('SELECT * FROM mp_charact2'); // запрос на выборку
 
while($row=mysql_fetch_array($result))
{
$mpcard = array();
$mpcard[$row['id']]  = array($row['price_rozn'], $row['size'], $row['color'], $row['filler']);
}
 
var_dump($mpcard);echo '<br>'; // выводит только последнее значение массива. Почему?
 
mysql_close($connection); 
?>
Добавлено через 2 минуты
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1
-- Время создания: Ноя 10 2018 г., 12:07
-- Версия сервера: 5.5.25
-- Версия PHP: 5.3.13
 
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
 
--
-- База данных: `monkid`
--
 
-- --------------------------------------------------------
 
--
-- Структура таблицы `mp_charact2`
--
 
CREATE TABLE IF NOT EXISTS `mp_charact2` (
  `id` int(5) NOT NULL,
  `price_rozn` int(5) NOT NULL,
  `size` varchar(255) NOT NULL,
  `color` varchar(255) NOT NULL,
  `filler` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
 
--
-- Дамп данных таблицы `mp_charact2`
--
 
INSERT INTO `mp_charact2` (`id`, `price_rozn`, `size`, `color`, `filler`) VALUES
(1603, 6500, 'S,M,L,XL,XXL', 'чёрный', '100% лебяжий пух'),
(1607, 6500, 'S,M,L', 'белый', '100% лебяжий пух'),
(1608, 6500, 'S,M,L,XL,XXL', 'серый', '100% лебяжий пух'),
(1659, 5999, '68-74-80', 'синий', '100% лебяжий пух');
 
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
0
1319 / 1011 / 232
Регистрация: 01.10.2018
Сообщений: 3,928
10.11.2018, 11:15
Вы сами портите массив в цикле.

Добавлено через 2 минуты
PHP
1
2
3
while ($row=mysqli_fetch_assoc($result)) {
    $mpcard[array_shift($row)]=$row;
}
Также в коде содержится намек, что вам не помешает перейти на использование MySQLi.
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
10.11.2018, 11:26  [ТС]
Цитата Сообщение от estic Посмотреть сообщение
Также в коде содержится намек, что вам не помешает перейти на использование MySQLi
Видимо, да. Я только начинаю открывать для себя MySQL и, конечно, не знаю отличия и преимущества MySQLi, хотя, так или иначе, видел сети призывы переходить на MySQLi.
0
1319 / 1011 / 232
Регистрация: 01.10.2018
Сообщений: 3,928
10.11.2018, 11:41
Используемое вами расширение официально считается устаревшим. Перейти будет не сложно, т.к. MySQLi - его естественный наследник.

Добавлено через 11 минут
Цитата Сообщение от alanat Посмотреть сообщение
if(!$connection || !$db) {exit(mysql_error());}
Позновато делаете проверку. В MySQLi обычно подключение и выборка базы данных выполняется при помощи одной функции, функции подключения. $result тоже нужно проверять. Для вашего случая есть простой способ, например:
PHP
1
$mysqli=mysqli_connect() or die();
Добавлено через 43 секунды
Для $result аналогично.
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
10.11.2018, 11:41  [ТС]
Цитата Сообщение от estic Посмотреть сообщение
Перейти будет не сложно
А можно по частям переходить на MySQLi? Напрмер, переписать это:
PHP
1
2
3
4
5
6
7
8
<? $connection = mysql_connect ("localhost","root",""); // подключение к mysql
$db = mysql_select_db ("monkid"); //выбор базы данных monkid
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");
if(!$connection || !$db) {exit(mysql_error());}
 
$result=mysql_query('SELECT * FROM mp_charact2'); // запрос на выборку
?>
А это оставить:
PHP
1
mysql_close($connection);
Или так не пройдет? В файле всё должно быть написано на одном языке?
0
1319 / 1011 / 232
Регистрация: 01.10.2018
Сообщений: 3,928
10.11.2018, 11:57
К предыдущему сообщению. При настройке кодировки тоже может возникать ошибка

Добавлено через 1 минуту
Цитата Сообщение от alanat Посмотреть сообщение
А можно по частям переходить на MySQLi?
Нет, используемые описатели не совместимы между собой.

Добавлено через 2 минуты
Цитата Сообщение от alanat Посмотреть сообщение
Или так не пройдет?
Не пойдет.
PHP
1
mysqli_free_result($result);
PHP
1
mysqli_close($mysqli);
Добавлено через 1 минуту
Также можно использовать ООП-синтаксис.

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

Добавлено через 4 минуты
Хотя использование встроенных функций тоже часто встречается и не считается чем-то зазорным. Но в грамотно написанном приложении все равно с этим не так много проблем. Как минимум присутствует централизация (использование единой точки входа и т.п.), взаимозаменяемость составных частей (тоже можно делать поэтапную замену, но, грубо говоря, не отдельными страницами, а целыми разделами и т.п.).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2018, 11:57

Как в непустом Вордовском файле найти необходимый мне текст и заменить его на результат работы программы
Всем доброго времени суток. Суть вопроса такова. На форме, к примеру, 2 баттона с текстом и 1 баттон обрабатывает событие клика. как,...

Заменить текст в файле
Помогите, пожалуйста. Есть текстовый файл, в котором в каждой строке по 2 слова, например: i я go иду sun солнце Нужен код, чтобы...

Текст в файле: найти, удалить, записать, заменить
Здравствуйте) Помогите плиз упростить кучу телодвижений руками. Файла 01.csv строки вида... ++:mbvxypmsrguvsqyfsddg:111 ...

Заменить в файле текст, находящийся между заданными участками
В указанный файл вместо строк расположенных между #FILE имя-файла.txt и #FILE-END подставить содержимое файла имя-файла.txt. ...

Как ввести текст в файл, а потом через функцию продолжить другой текст в этом же файле
Здравствуйте. Допустим, я хочу ввести текст в файл через main, а потом мне нужно вызвать функцию, в которой я должен продолжить писать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ По ссылке 403. Не очень информативно такую ссылку постить. Запись от Usaga размещена Сегодня в 06:46 . . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru