auslesen von Variablen aus einer Textdatei
Simone
- php
0 comunicout0 Simone
0 Midian0 Simone
0 Chris (C)
Hi,
Ich war schon lange nicht mehr hier.
Mein Problem ist folgendes:
ich erstelle eine Navigations-Datei(.csv Format) mit Variablen und Werten
..................
$head_nav_datei[0] ="h1.php";
$head_nav_datei[1] ="h2.php";
$head_nav_datei[2] ="h3.php";
$head_nav[0] ="*Nr.1*";
$head_nav[1] ="*Nr.2*";
$head_nav[2] ="*Nr.3*";
..................
das auslesen mach ich so:
$csv = "$path/navigations.csv";
$lines = file($csv);
for($i = 0; $i <= count($lines); $i++)
{
echo $lines[$i];
}
Aber wie kann ich diese Elemente so nutzen um sie in einer entsprechende Funktion wieder einzubauen?
d.H.
$head_nav_datei[0] ="h1.php";
$head_nav_datei[1] ="h2.php";
$head_nav_datei[2] ="h3.php";
$head_nav[0] ="*Nr.1*";
$head_nav[1] ="*Nr.2*";
$head_nav[2] ="*Nr.3*";
Variable und Wert sollen wieder vorhanden sein.
bzw. für die Funktion zur Verfügung stehen.
Es ist garnicht so leicht das zu erklären was man will
Ich hoffe Ihr habt' mich verstanden.
Simone
hi,
also vorausgesetzt du hast folgendes textfile mit variablen:
#-------------------------------------------------------
#this is a TXTfile
#alle words in front of the '=' will get to $Variables
#and all words behind the '=' will get their values
name = christopher
alter = 21
ort = berlin #versteckter text
farbe = schwarz
#-------------------------------------------------------
dann geht folgende funktion:
<?
// hier textfile angeben:
$ro_txtfile = "txtfile.txt";
// verzechnishandle wird geöffnet
$verz=@fopen($ro_txtfile,"r");
while (!feof($verz))
{
// jede reihe wird ausgelesen
$row = @fgets($verz, 4096);
// kommentare am reihenanfang ausfiltern
if(substr(trim($row),0,1)!="#") {
// kommentare am reihenende abschneiden
if(strchr($row,"#")) {
$posComment = strpos($row,"#");
$row = substr($row,0,$posComment);
}
// key und value definieren
$row = explode("=",$row);
// ergebnisse in array speichern
$txtfile[trim($row[0])] = trim($row[1]);
}
}
// verzeichnishandle schließen
fclose ($verz);
// e.g.output
echo $txtfile[farbe];
?>
in diesem fall werden alle zeichen hinter # ignoriert, alle anderen übernommen...
HIH
mfg
comunicout
Simone
Dank Dir für Deine Antwort !
Simone
Greetings!
Also:
1. Warum nimmst du kein Include-File ( *.inc ) und schreibst da alle Variablen mit Werten rein ( natürlich PHP-konform ) und includierst das dann in einem PHP-File
require_once( "Navigationfile.inc" );
Dann kannst du auf die Variablen wieder zugreifen!.
Eine andere Möglichkeit wäre ( wenn es nicht anders geht, als du beschrieben hast ), jede eingelesene Zeile, die du in deinem Beispiel mit echo ausgibts, zu evaluieren.
$csv = "$path/navigations.csv";
$lines = file($csv);
for($i = 0; $i <= count($lines); $i++)
{
eval( $lines[$i] );
}
Jetzt kannst du auf jede Variable zugreifen.
Eval macht nichts weiter als einen String in richtigen PHP-Code zu wandeln.
Beispiel:
eval( "echo( 'hallo' );" ); würde "hallo" an den Browser zurücksenden, als hättest du statt dessen echo "hallo" geschrieben.
Hi
Include geht leider nicht!
Die Menüfunktion soll ohne eindeutigen Path funktionieren.
Praktisch egal welche Unterverzeichniss es sein wird
Aber das geht!
$lines = file($csv);
for($i = 0; $i <= count($lines); $i++)
{
$variable .=$lines[$i];
}
eval( "$variable" );
Danke für die schnelle Antwort !!!
Simone
Hallo Selferin,
wieso machst Du Dir das Leben so schwer? Nimm doch serialize() und unserialize(). Dann gibts kein Problem mehr mit den Variablen.
Leider unterstützt PHP keine festen Satzformate, sodass man sich einfach ein Rrandom-Access-File aufbauen könnte. Da könnte man dann nämlich auch einzelne Werte im File ersetzen, ohne alles einlesen zu müssen.
Grüße
Chris (C)