krizzelfix
Commander
- Registriert
- Sep. 2005
- Beiträge
- 2.626
//gelöst
Hallo User,
ich hab mal wieder ein Problem mit PHP.
Und zwar will ich in einer Datei die Werte für Variablen verändern und diese Daten wieder Speichern.
Dazu habe ich mir eine Array erstellt in dem erst der "Datentyp" steht und dann der Variablenname als Key mit dem Wert der zugewiesen werden soll. Das sieht dann so aus:
Und dann geh ich die Datei Zeile für Zeile durch und überprüfe per RegEx ob es was zu ersetzen gibt.
Mein Problem ist jetzt das die Variable $acc_value immer leer ist. Aber die ganzen echos werden ausgegeben.
Teil der Ausgabe:
Bin für jeden Tipp dankbar
Grüße
tewes
// Edit: Problem gefunden. Die variable $subject wurde immer von dem preg_match überschrieben.
Hallo User,
ich hab mal wieder ein Problem mit PHP.
Und zwar will ich in einer Datei die Werte für Variablen verändern und diese Daten wieder Speichern.
Dazu habe ich mir eine Array erstellt in dem erst der "Datentyp" steht und dann der Variablenname als Key mit dem Wert der zugewiesen werden soll. Das sieht dann so aus:
PHP:
$vars['bool']['ENABLE_USER'] = (isset($_POST['user']) ? "true" : "false");
$vars['bool']['ENABLE_PASSFILES'] = (isset($_POST['pass']) ? "true" : "false");
$vars['bool']['ENABLE_RSS'] = (isset($_POST['rss']) ? "true" : "false");
PHP:
foreach ($initaccess as $acc_key => $acc_value) {
$subject = $acc_value;
if (preg_match("~^\s*\$~is", $subject)) {
echo "acc = ".$acc_value." = ".$acc_key;
foreach ($vars['bool'] as $key => $value) {
$pattern = "~^\s*\$".$key."\s*=[^;]*;\s*$~is";
$replace = "$".$key."\t\t\t\t\t=".$value.";";
$subject = $acc_value;
echo '<span style="color: #ff0000;>Boolean</span><br/><br/>';
echo htmlentities($pattern)." = pattern<br/>";
echo htmlentities($replace)." = replace<br/>";
echo htmlentities($subject)." = subject<br/>";
if(preg_replace($pattern, $replace, $subject))
{
$initaccess[$acc_key] = $subject;
}
}
foreach ($vars['zahl'] as $key => $value) {
$pattern = "~^\s*\$".$key."\s*=[^;]*;\s*$~is";
$replace = "$".$key."\t\t\t\t\t=".$value.";";
$subject = $acc_value;
echo '<span style="color: #ff0000;>Zahl</span><br/><br/>';
echo htmlentities($pattern)." = pattern<br/>";
echo htmlentities($replace)." = replace<br/>";
echo htmlentities($subject)." = subject<br/>";
if(preg_replace($pattern, $replace, $subject))
{
$initaccess[$acc_key] = $subject;
}
}
foreach ($vars['name'] as $key => $value) {
$pattern = "~^\s*\$".$key."\s*=[^;]*;\s*$~is";
$replace = "$".$key."\t\t\t\t\t= array(\"".$value."\");";
$subject = $acc_value;
echo '<span style="color: #ff0000;>name</span><br/><br/>';
echo htmlentities($pattern)." = pattern<br/>";
echo htmlentities($replace)." = replace<br/>";
echo htmlentities($subject)." = subject<br/>";
if(preg_replace($pattern, $replace, $subject))
{
$initaccess[$acc_key] = $subject;
}
}
}
}
Teil der Ausgabe:
acc = = 1Boolean
~^\s*$ENABLE_LANGUAGES\s*=[^;]*;\s*$~is = pattern
$ENABLE_LANGUAGES =false; = replace
= subject
Boolean
~^\s*$ENABLE_USER\s*=[^;]*;\s*$~is = pattern
$ENABLE_USER =true; = replace
= subject
Boolean
~^\s*$ENABLE_RSS\s*=[^;]*;\s*$~is = pattern
$ENABLE_RSS =true; = replace
= subject
Boolean
~^\s*$ENABLE_ARTICLE_BACKUPS\s*=[^;]*;\s*$~is = pattern
$ENABLE_ARTICLE_BACKUPS =false; = replace
= subject
Boolean
~^\s*$ACCESS_SHOP['bestellfunktion']\s*=[^;]*;\s*$~is = pattern
$ACCESS_SHOP['bestellfunktion'] =false; = replace
= subject
Boolean
~^\s*$ACCESS_SHOP['produktgalerie'] \s*=[^;]*;\s*$~is = pattern
$ACCESS_SHOP['produktgalerie'] =false; = replace
= subject
Boolean
~^\s*$ACCESS_SHOP['produktdownloads']\s*=[^;]*;\s*$~is = pattern
$ACCESS_SHOP['produktdownloads'] =false; = replace
= subject
Zahl
~^\s*$ACCESS_SHOP['anzahl_shopprodukte']\s*=[^;]*;\s*$~is = pattern
$ACCESS_SHOP['anzahl_shopprodukte'] =0; = replace
= subject
Bin für jeden Tipp dankbar
Grüße
tewes
// Edit: Problem gefunden. Die variable $subject wurde immer von dem preg_match überschrieben.
Zuletzt bearbeitet: