Задать вопрос

Перезапись значения переменной в php файле?

Существует файл config.php в котором хранятся переменные:
$a = '1';
$b = '2';
$c = '3';

Необходимо из другого скрипта изменить значение переменной $a на '4', при этом что бы это значение изменилось именно в файле.
Заранее благодарю за ответы.
  • Вопрос задан
  • 8847 просмотров
Подписаться 4 Оценить 1 комментарий
Решения вопроса 3
@VovanZ
Регуляркой:
$var_name = 'a';
$new_value = '4';
preg_replace("@$($var_name)\s*=\s*'.*?'@", "$$1='$new_value'", $text);

Но сама необходимость делать подобное - признак попахивающей архитектуры.
Ответ написан
Комментировать
например, содержимое 123.php (его будем менять)
<?PHP 
echo 'some code';
echo 'some code';
$a = 1;
$b = 2;
$с = 3;
echo 'some code';
echo 'some code';
?>

и если решать тупо в лоб:
<?php
        $file = '123.php'; 
        $string = 5; //считаем с нуля.
		$value = "\$c = bla ,bla;\r\n";        
        $config_array = file($file);
        print_r($config_array);   // смотрим, что прочитано
		echo '<hr />';      // просто, для визуального комфорта
		$config_array[$string] = $value;
		print_r($config_array);  //смотрим, что получилось
		echo '<hr />';
		$f = fopen($file,'w');
		for ($i = 0; $i <= count($config_array); $i++) 
		{
		fwrite($f,$config_array[$i]); 	//перезаписываем файл
		}
		$config_array = file($file); // читаем снова,
		print_r($config_array); // и видим, что получилось.
		echo '<hr />';
        ?>

сделать поиск по именам переменных тоже недолго, но по-моему, постоянная перезапись файла, в котором есть еще какой то код.. это что то неправильное.
Ответ написан
Комментировать
vasilyev
@vasilyev
php, 1c-bitrix
А что-то типа
$content = serialize($my_variable);
file_put_contents($file, $content);
$content = unserialize(file_get_contents($file));

не подойдет?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 6
egor_nullptr
@egor_nullptr
Самое простое - вынесите объявление переменной $a в отдельный файл

source.php:
<?php
$a = require 'var_a.php';
$b = '2';
$c = '3';

var_a.php:
<?php
return '1';

Теперь, чтобы изменить значение в файле достаточно сделать
file_put_contents("var_a.php", "<?php return '4';");


И не стоит попусту мучить регулярки ;)
Ответ написан
@Caman
Разработка
Содержимое файла занести в переменную, в переменной регуляркой изменить нужное, записать значение в файл.
Ответ написан
реализуйте, чтоб файл в массив читался.
как считали, так же целиком и записали.
Ответ написан
sdevalex
@sdevalex
Если не нужно сохранить исходное форматирование, то лучший способ... перегнать код в AST, поменять значение и сгенерировать опять PHP.
Ответ написан
Комментировать
@offyura
Лучше уж для этих целей БД использовать
Ответ написан
Комментировать
если это сторонний код (внешняя библиотека) отрефакторите, чтобы значения параметров брались из более подобающего места и сделайте pull request
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы