[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Значения по ключу
ParadigmX
Как из строки сделать массив и вытягивать значения по ключу?
А потом обратная задача, заменять значения по ключу нужным мне.


Допустим есть файл конфигураций с текстом:

max_item_mass = 500.2
jump_speed = 6.2
crouch_coef = 0.45
climb_coef = 0.7


Мне нужно сначала вытащить значение 500.2 с ключом max_item_mass
А затем заменить его нужным мне значением например 200.5

Я пробовал вытягивать через preg_match но не разобрался в логических выражениях..

Помогите поже)))
Ron
Это обычный INI файл, вероятно с секциями, вот тут повнимательнее на предмет одинаковых ключей в разных секциях, потому что алгоритм замены их не учитывает. На вот тебе примерный код, дальше сам пили под свою задачу:

<?php
$filepath = 'q.ini';

$inifile = file_get_contents($filepath);
$config = parse_ini_string($inifile);

print_r($config);

$changeValues = ['max_item_mass' => 10,
'climb_coef' => 20,
'jump_speed' => 30];

foreach ($changeValues as $key=>$value ) {
$pattern = '!(' . preg_quote($key) . '\s*=).*!';
$inifile = preg_replace($pattern, "$1 $value", $inifile);
}

echo $inifile;

//file_put_contents($filepath, $inifile);
ParadigmX
Цитата (Ron @ 2.08.2016 - 06:45)
Это обычный INI файл, вероятно с секциями, вот тут повнимательнее на предмет одинаковых ключей в разных секциях, потому что алгоритм замены их не учитывает. На вот тебе примерный код, дальше сам пили под свою задачу:

<?php
$filepath = 'q.ini';

$inifile = file_get_contents($filepath);
$config = parse_ini_string($inifile);

print_r($config);

$changeValues = ['max_item_mass' => 10,
'climb_coef' => 20,
'jump_speed' => 30];

foreach ($changeValues as $key=>$value ) {
$pattern = '!(' . preg_quote($key) . '\s*=).*!';
$inifile = preg_replace($pattern, " $value", $inifile);
}

echo $inifile;

//file_put_contents($filepath, $inifile);

Спасибо буду пробовать)
ParadigmX
Цитата (Ron @ 2.08.2016 - 06:45)
Это обычный INI файл, вероятно с секциями, вот тут повнимательнее на предмет одинаковых ключей в разных секциях, потому что алгоритм замены их не учитывает. На вот тебе примерный код, дальше сам пили под свою задачу:

<?php
$filepath = 'q.ini';

$inifile = file_get_contents($filepath);
$config = parse_ini_string($inifile);

print_r($config);

$changeValues = ['max_item_mass' => 10,
'climb_coef' => 20,
'jump_speed' => 30];

foreach ($changeValues as $key=>$value ) {
$pattern = '!(' . preg_quote($key) . '\s*=).*!';
$inifile = preg_replace($pattern, " $value", $inifile);
}

echo $inifile;

//file_put_contents($filepath, $inifile);

Слышь этот участок ощипку синтаксиса бьёт то ли со скобками что то не то не знаю
$changeValues = ['max_item_mass' => 10,
'climb_coef' => 20,
'jump_speed' => 30];
Быстрый ответ:

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