Datei bearbeiten

oconner

Aktives Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Reaktionspunkte
0
Hallo.

Ich weis zwar wie ich mit PHP eine Datei im Web öffnen und bearbeiten kann, aber wie kann ich z.b. dem code sagen das er in einer php Datei nur den inhalt einer variable ändern soll.

also quasi das eine Datei geöffnet wird und in $var="inhalt" Inhalt der Inhalt rein kommt den Ich im Webbrowser in ein Textfeld eingegeben habe.

Soll quasi für ne Installations Datei dienen wo Benutzername und Passwort in eine php config Datei rein müssen.:)
 
Dafür müsstest Du die Zeile, in der die Zeile steht direkt einlesen und neu schreiben, was imho damit verbunden ist, die komplette Datei einzulesen, zu ändern und dann neu einzulesen.

Vielleicht hilft es, eine zeite Datei für solche Sachen anzulegen, in der nur eine Zeile drin steht, "irgendwie" kodiert und mit Trennzeichen versehen, so dass man das ganz einfach in ein Array einlesen kann.

Um mit den Werten zu Arbeiten kann man sich ja eine Funktion nach dem Schema

PHP:
function holewert(wert_den_ich_haben_will) {

  lese_datei_ein();
  $tmp = explode(dateizeile);
  foreach(tmp as $tmp2){
    $var[] = dekodiere(tmp2);
  }

  switch(wert_den_ich_haben_will){
    case "eins":
      return $var[0];
    break;
    case "oderwertzwei":
      return $var[1];
    break;

...

   default:
     return false;
   break;
  }

}


Oder halt in einer SQL-Datenbank, aber da ich annehme, das Du ein Script für die öfentlichkeit schreibst, was so simpel wie möglich gehalten ist, wäre das meine erste Idee.

gruß
Lukas
 
Jo, war auch mein erster Gedanke. Ich würde das auch ganz simpel in eine SQL-DB schreiben. Die Dateilösung ist ziemlich umständlich und langsam.

2nd
 
will aber extra kein sql benutzen da es ja nur um eine Zeile geht.
 
2ndreality schrieb:
Jo, war auch mein erster Gedanke. Ich würde das auch ganz simpel in eine SQL-DB schreiben. Die Dateilösung ist ziemlich umständlich und langsam.

Naja, Dateizugriffe sind aber schon um einiges schneller als ein Datenbankzugriff...

Datei einlesen - Wert, der verändert wird mit Regular Expression suchen und ändern - zurückschreiben. Abhängig von der PHP-Version die du verwendest gehts einfacher oder schwerer.
 
Achja, ich will hier nicht nur große Reden klopfen. Hier ist ein Beispiel wie der Austausch eines Wertes funktionieren könnte (ohne das drumherum von Dateieinlesen usw.)
PHP:
<?php
//zuerst der Variable $subject einen Wert zuweisen, 
//hier kann man den Inhalt der eingelesenen Datei reinklatschen
$subject = '$var="einWert123"';
//zum Beweis die Ausgabe vorher
print ($subject.'<br />'."\n");

//Das ist der Reguläre Ausdruck:
//Unsere Variable heisst $var, wir wissen, dass
//danach ein = gefolgt von einem " und 
//einer alphanumerischen Kombination unbekannter Länge.
//Danach kommt wieder ein "
$regex = '/\$var=\"[A-Za-z0-9]*\"/';

//Das ist der Wert, den wir ersetzen wollen. Es soll
//wieder die Variable $var=" geschrieben werden, nur
//der Inhalt ist ein anderer. Hier fügt man den Input
//aus dem Textfeld im Browser ein. Das ganze macht man
//mit einer banalen String-Konkatination
$replace ='$var="einAndererWert"';

//zu guter Letzt wird die Funktion aufgerufen, idealer-
//weise können wir gleich die Variable $ subject verwenden 
$subject = preg_replace($regex, $replace, $subject);

//Zum Beweis der Output
print ($subject);

//Die html-Ausgabe sollte sein:
//$var="einWert3"<br />
//$var="einAndererWert"
?>

Wenn du PHP 5 verwenden solltest, dann kannst du auf die Datei lesend mit file_get_contents und schreibend mit file_put_contents zugreifen, ansonsten musst du es auf die alte Art machen.

Damit hast du eine gute Grundlage für dein Script. Viel Spaß beim Anpassen.
 
Zuletzt bearbeitet:
goddess schrieb:
Naja, Dateizugriffe sind aber schon um einiges schneller als ein Datenbankzugriff...

Datei einlesen - Wert, der verändert wird mit Regular Expression suchen und ändern - zurückschreiben. Abhängig von der PHP-Version die du verwendest gehts einfacher oder schwerer.

Habe selbst noch einmal rumgesucht und die Infos gefunden - Du hast natürlich Recht. Danke für den Hinweis.

2nd
 
Klar hab ich recht. Ist mein Job, recht zu haben ;)
 
2ndreality schrieb:
Schon klar - wenn der Name Programm ist...

2nd

Exakt! :D Der Nick ist eigentlich Server-Goddess und kommt aus der Zeit, als ich noch im IT-Support gearbeitet habe. Der war mir aber zu lang und ich hab ihn kurzerhand gekürzt :)

@oconner: haben die tipps was geholfen?
 
Zurück
Oben Unten