[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Функция для изменение значений переменной
okapo
я держу настройки сайта в файл PHP
есть функция

function UpdCfg($newVars, $dir)
{
$cfgFile = implode("",file($dir));
$i = 0;

while(true)
{
foreach(array_slice($newVars,$i,1) as $varName => $newVar)
{
$preg = "/\\".$varName."\040=\040\"[^\n]*\";/";
$cfgFile = preg_replace($preg,$varName." = \"".$newVar."\";",$cfgFile);
}
if($i == count($newVars)-1)break;
$i++;
}
$fp = fopen($dir,"w");
fputs($fp,$cfgFile);
fclose($fp);
}


работает она так, и очень хорошо работает

$newVars = array('$con_st' => intval($_POST['stat']));
UpdCfg($newVars,'ads/config.php');


но что надо делать что бы она работала с переменными такого вида $price['banner']

$newVars = array('$price['banner']' => intval($_POST['bnprice']));
UpdCfg($newVars,'ads/config.php');

если так использовать то она не хочет работать то есть не сохраняет ничего



Спустя 19 минут, 2 секунды (25.01.2012 - 18:12) Alehandr написал(а):
Код в следующей месаге...
Удалил, ибо много места занимает... =)

Спустя 1 минута, 3 секунды (25.01.2012 - 18:13) okapo написал(а):
Можно пример работы ?

Спустя 2 минуты, 6 секунд (25.01.2012 - 18:15) Alehandr написал(а):
okapo
Файл изъят из моих уроков по MVC.
Сейчас подправлю немного и сделаю пример использования...

Спустя 3 минуты, 44 секунды (25.01.2012 - 18:19) Alehandr написал(а):
Убрал код...

Спустя 9 минут, 40 секунд (25.01.2012 - 18:28) okapo написал(а):
Что то не то, функция что я использую

меняет только нужную переменную

это что вы мне дали

вот как то так сохраняет

return array(
'$serf_price[t_20]' => 'Hello world!',
);



а мне нужно что бы не трогал другие и сохронял в таком формате

$serf_price['t_20'] => 'Hello world!';

Спустя 15 минут, 25 секунд (25.01.2012 - 18:44) Alehandr написал(а):
okapo
Я видимо не совсем понял того, что у вас уже есть и как работает.
В каком виде у вас сейчас конфиг файл?

Спустя 12 минут, 36 секунд (25.01.2012 - 18:56) okapo написал(а):

<?
$serf_add = "1";
$serf_show = "1";
$serf_price['t_20'] = "0.026";
$serf_price['t_30'] = "0.028";
$serf_price['t_40'] = "0.032";
$serf_price['t_50'] = "0.036";
$serf_price['t_60'] = "0.040";


$context_add = "1";
$context_show = "1";
$context_sale = "1";
$context_price = "0.01";
$context_min_plan = "10";
?>



примерно вот такой

ясли я правельно понял то ваш класс переписывает файл но мне так не подходит так как настройки с разных страниц изменяется и не все сразу

Спустя 3 минуты, 1 секунда (25.01.2012 - 18:59) Alehandr написал(а):
function UpdCfg($newVars, $dir)
{
$cfgFile = implode("",file($dir));
$i = 0;

while(true)
{
foreach(array_slice($newVars,$i,1) as $varName => $newVar)
{
$preg = "/\\". preg_quote($varName) ."\040=\040\"[^\n]*\";/";
$cfgFile = preg_replace($preg,$varName." = \"".$newVar."\";",$cfgFile);
}
if($i == count($newVars)-1)break;
$i++;
}
$fp = fopen($dir,"w");
fputs($fp,$cfgFile);
fclose($fp);
}

Спустя 38 минут, 45 секунд (25.01.2012 - 19:38) okapo написал(а):
а как правельно писать вот тут

$newVars = array('$price['banner']'  => intval($_POST['bnprice']));


дает ошибку на
'$price['banner']'

Спустя 3 минуты, 51 секунда (25.01.2012 - 19:42) Alehandr написал(а):
$newVars = array('$price[\'banner\']'  => intval($_POST['bnprice']));

Спустя 8 минут, 56 секунд (25.01.2012 - 19:51) okapo написал(а):
Цитата (Alehandr @ 25.01.2012 - 16:42)
$newVars = array('$price[\'banner\']'  => intval($_POST['bnprice']));

не менят значение

а так

$newVars = array($price['banner']  => intval($_POST['bnprice']));


меняет значение для всех переменных одна и таже

Спустя 7 минут, 24 секунды (25.01.2012 - 19:58) Alehandr написал(а):
function UpdCfg($newVars, $dir) {
$cfgFile = implode("",file($dir));
$i = 0;

foreach($newVars as $varName => $newVar) {
$preg = "/" . preg_quote($varName) . "\040=\040\"[^\n]*\";/";
$cfgFile = preg_replace($preg,$varName." = \"".$newVar."\";",$cfgFile);
}

$fp = fopen($dir,"w");
fputs($fp,$cfgFile);
fclose($fp);
}


$newVars = array('$price[\'banner\']'  => intval($_POST['bnprice']));


Пробуй.

Спустя 5 минут, 23 секунды (25.01.2012 - 20:04) okapo написал(а):
ураа huh.gif

заработало, не знаю даже как тебе отблогодорить

огромное тебе спасибо

Спустя 3 минуты, 45 секунд (25.01.2012 - 20:08) Alehandr написал(а):
okapo
+ в карму XD

Спустя 49 секунд (25.01.2012 - 20:08) Shadez написал(а):
Имхо, лучший вариант работы с конфигами - хранить в одной переменной и использовать var_export() при обновлении значений.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.