如何使用另一个php文件编辑php文件的变量

Ok so I want to do something similar to how Simple Machine Forum edits some variable within the Admin panel on the forum. For instance I have a settings.php file. I want tool.php to open and find all declared php variables in the settings.php like $background_color='Orange' and output in tools.php Background Color: Orange inside of a form tag that, once changed to 'Purple' and submitted, replaces 'Orange' with 'Purple' and now if i open 'settings.php' the variable inside the file is now "$background_color='Purple'" without having to go in an manually edit it. I can just submit the new data for the variable and replace the old.

To keep the data persistent, you will need to store data in a database or separate file e.g. JSON file. Then you can use that data everywhere it is needed.

Here is an example using a JSON file.

setting_variables.json:

{
    "background": "red",
    "color": "white"
}

settings.php

$settings = json_decode(file_get_contents("settings_variables.json"), true);
$background = $settings['background'];

tools.php

include ("settings.php");

// If form is posted
if(isset($_POST['submit'])){
    /* Updating variables in JSON file*/

    //Get settings_json file
    $setting_vars = json_decode(file_get_contents('settings_variables.json'), true);

    // Update variable
    $background = $setting_vars['background'] = $_POST['color'];

    // Store variable value to JSON file
    file_put_contents("settings_variables.json", json_encode($setting_vars));
}

?>

<form method="post" <?php echo "style='background-color:".$background . "'"; ?>>
    <select name="color">
    <option value="red">red</option>
    <option value="blue">blue</option>
    <option value="orange">orange</option>
    <option value="yellow">yellow</option>
    <option value="purple">purple</option>
  </select>
  <input type="submit" name="submit"/>
</form>

You can do this using database fetch that value from database in settings.php and update that from your tools.php or wherever you want .

To load the variables in tool.php, simply include("settings.php").

In order to change settings, you will need to modify settings.php.

The easiest way to do this should be by regex-replacing the old value with the new one, e.g. ["\$background_color *= *'\d*'"] and replace that with ["\$background_color = 'Purple'"].

Just overwrite the file with the new string.

I'm not sure I escaped everything correctly, but this way you should be able to replace the whole file.

See http://php.net/manual/en/function.preg-replace.php

The drawback is, that if the settings file is very large, it may take some time to do that, although that will probably not be a problem for your use case.

alternatively, you could read the file line by line and replace that (either manually or by using regex-replacing again.