Перейти к содержимому


Выбрать шаблон и создать сайт

Код для редактирования PHP-файла средствами php

#1 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 18 Март 2011 - 14:41

подскажите, допусти есть файл config.php следующего содержания
$config = array(); 
$config['hostname'] = 'localhost';
$config['base'] = 'base';
$config['user'] = 'root';
$config['password'] = '';

а как мне перезаписать например следующий элемент массива $config['password'] , задав ему другое значение?

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Текстовый редактор на PHP
  2. Создание файла с помощью php
  3. Обработка PHP-кода - полученного из базы данных
  4. Нужна программа для редактирования php
  5. Редактирование rss.php на dle 10.1

#2 DCdomain

DCdomain
  • Пользователь
  • 22 сообщений
  • Репутация: 0

Отправлено 18 Март 2011 - 14:48

Ну так и пишите $config['password']='новое значение';
  • 0

#3 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 18 Март 2011 - 14:55

я же написал средствами php нужно менять значения
  • 0

#4 DCdomain

DCdomain
  • Пользователь
  • 22 сообщений
  • Репутация: 0

Отправлено 18 Март 2011 - 14:59

$config['password']='новое значение';


Разьве не средства php?

Или Вам нужно просто строчку поменять в config.php?
  • 0

#5 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 18 Март 2011 - 15:03

$config['password']='новое значение';

как я сразу не догодался

Разьве не средства php?

нет это ты предлагаешь ручками делать

Или Вам нужно просто строчку поменять в config.php?


в третий раз повторяю, скрипт считывает содержимое файла config.php, ищет нужный элемент массива, меняет значение и записывает в config.php

разницу улавливаешь?
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 18 Март 2011 - 15:58

surfer,
1) Вариант с четко определенной структурой. Полная перезапись конфиг-файла.
Таким способом, мы четко знаем структуру и что содержится в файле config.php. Скрипт изначально считал переменные из файла config.php, допустим, в массив (или они в файле уже в массиве, а мы его просто подгружаем их).
Далее, если мы изменяем значение в конфиге, то заново собираем весь записываемый контент из массива + новое значение и помещаем всё в config.php
2) Вариант с любой структурой файла, но строго определенной формой строки. Полная перезапись конфиг-файла.
Мы открываем конфиг файл и считываем его полностью в переменную. С помощью регулярного выражения или вхождения подстроки ищем то что нужно заменить и делаем подмену. Далее замененный контент записываем полностью обратно в файл.

P.s.: Перезаписывать одну строчку, если объем старых и новых данных не совпадает, трудоемкая задача, т.к. запись в файл происходит поверх старых символов (если они присутствуют), поэтому мы можем выйти за пределы замены старых данных и удалить что-то лишнее. Конечно подобную задачу реализовать возможно, но не нужно.
  • 0

#7 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 18 Март 2011 - 16:03

я тоже так считаю, что надо перезаписывать, есть нюансы над которыми надо подумать
  • 0

#8 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 18 Март 2011 - 16:19

разве нельзя через регулярки найти строку

$config['password'] = '';

и полностью переписать эту строку?
  • 0


#9 DCdomain

DCdomain
  • Пользователь
  • 22 сообщений
  • Репутация: 0

Отправлено 18 Март 2011 - 16:26

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

Позволяет создавать и редактировать файлы такого плана:
<?php 
// Timeout in cURL
// operations
$cfg_curl_timeout = 10;

// Banned IPs
$cfg_banned_ips = array (
0 => '10.10.10.10',
1 => '10.20.30.40',
);

// ROOTDIR is defined
// before including
// config file
$cfg_cachedir = ROOTDIR.'/maincache';

?>


Я думаю не сложно будет допилить и для работы с ассотиативными массивами.

Прикрепленный файл  confedit_2008_06_08.tar.gz   6,57К   Количество загрузок: 73
  • 0

#10 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 18 Март 2011 - 16:48

Banderas,

разве нельзя через регулярки найти строку

и полностью переписать эту строку?

Попробуй-ка перезаписать данные в середину файла, не стерев (не изменив) при этом лишнего, это касается, когда старые и новые данные разной длины (кол-во байт разное).
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru