Hey Phphulp,

Ik zit met een klein probleempje, ik ben bezig met een CMS en maak er een install voor. Omdat ik deze cms steeds van updates wil voorzien wil ik niet steeds een extra config die PHP dan replaced met de orginele, maar dat de values alleen worden veranderd (in ieder geval, dat de values worden veranderd).

Ik heb lopen Googlen omdat ik dit niet wist hoe het moest, en heb nu iets als dit gevonden en uitgeprobeerd:

<?php
    $fl='test_config.php'; 
    
    $tmp = fopen($fl, "r");
    $content= fread($tmp, filesize($fl));
    fclose($tmp);
    
    $content2 = preg_replace('/\$dbuser = \"(.*?)\";/', '$dbuser = "test";', $content);
    echo 'DB test 1: SET<br />';
    
    $content2 = preg_replace('/\$_WEBSITE["DB"]["user"] = \"(.*?)\";/', '$_WEBSITE["DB"]["user"] = "test";', $content2);
    
    $tmp =fopen($fl, "w");
    fwrite($tmp, $content2);
    fclose($tmp);
?>


Zoals jullie zien werk ik met $_WEBSITE["DB"]["user"], dat is voor mij wat overzichtelijker en alle opties staan zoals dit ongeveer in de CMS. Alleen die $_WEBSITE["DB"]["user"] wil die bijvoorbeeld niet veranderen. Nu heb ik het dus ook geprobeerd met $dbuser, maar die veranderd dan wel...

Dit is die test config waar ik het op uitprobeer:
<?php
    $dbuser = "test";
    
    $_WEBSITE["DB"]["user"] = "trlorl";
?>


Zoals jullie zien word de $dbuser wel replaced, maar die $_WEBSITE["DB"]["user"] niet...

Iemand enig idee hoe ik $_WEBSITE["DB"]["user"] zou kunnen vervangen op deze manier?

Met vriendelijke groeten,
Jasper
Beste jasper

Je code werkt met deze aanpassing in je 2de preg_replace

<?php


$content2 = preg_replace('/\$_WEBSITE\["DB"\]\["user"\] = \"(.*?)\";/', '$_WEBSITE["DB"]["user"] = "test2";', $content2);

?>
Timothy Callemein op 25/01/2014 12:39:55

Beste jasper

Je code werkt met deze aanpassing in je 2de preg_replace

<?php


$content2 = preg_replace('/\$_WEBSITE\["DB"\]\["user"\] = \"(.*?)\";/', '$_WEBSITE["DB"]["user"] = "test2";', $content2);

?>


Bedankt het werkt! Dat de oplossing zo dichtbij was :P
Bedankt voor het helpen :)

Reageren