Aus .txt lesen und EINEN als einen String ausgeben


Disap

Mitglied
Hallo.
Mein Problem besteht beim richtigen Auslesen einer Textdatei. Und zwar öffne ich die Textdatei mit dem Befehl fopen("NAME.txt", "r"); aus. In der Textdatei steht als Text " 1+1 ". Und diesen Text gilt es, auszulesen und auszurechnen.
Um nun die Datei auszelesen verwende ich den Befehl:
PHP:
while (false !== ($A = fgetc($Datei)))
Nun kann ich zwar mit ein paar Zeilen mehr genau "1+1" ausgeben, aber ich möchte 2 ausgeben lassen. Dabei taucht jedoch das Problem auf: Wie? Ich habe es zunächst mit eval () versucht, hat aber auch nur "1+1" ausgegeben, was ich mir so erklären, dass dieser Befehl in der while Schleife stand und eval somit nur zeichenweise den String verrechnen konnte.
Ein weiterer Versuch war, dass ich versucht habe, $A in Arrays zu splitten und nachher zusammenzurechnen. Dies war allerdings auch ein Reinfall. Geht es denn überhaupt mit Arrays?
Oder wie setze ich einzelne Zahlen, die zeichenweise eingelesen werden, zu einen String zusamnmen?

Liebe Grüße Disap
 

diggity

Erfahrenes Mitglied
In Arrays splitten ist glaube ich keine gute Lösung, ausser du hast i9mmer die Selben Trennzeichen (in diesem Falle "+")

Aber funktionieren muss das schon,

while() {
$werte = explode("+", $A);
$resultat = $werte[0] + $werte[1];
}
 

Disap

Mitglied
In Arrays splitten ist glaube ich keine gute Lösung, ausser du hast i9mmer die Selben Trennzeichen (in diesem Falle "+")

In dem Fall gibt er bei mir nur 101 aus... Wenn ich die Textdatei aber so veränder, dass "1 + 1" da steht, also mit Leerzeichen, so gibt er 10001 aus. Ich sehe gerade auch nicht, warum er das Pluszeichen als Null darstellt.
Was würde es denn für eine elegantere Lösung geben?

Grüße Disap
 

Disap

Mitglied
Jörg Rißmann hat gesagt.:
Da sollte dir [phpf]eval[/phpf] weiterhelfen!
Danke für den Hinweis. Nur leider bin ich mit eval nicht zum gewünschten Erfolg gekommen.

Mit [phpf]eval[/phpf] kam ich letzendlich zu einen sehr schlichten Quelltext, der es aber theoretisch, jedoch nicht praktisch, schon tun sollte:
PHP:
while (false !== ($A = fgetc($Datei)))
	{
	$Ergebnis = "$A";
	eval("\$Ergebnis = \"$Ergebnis\";");
	echo $Ergebnis;
	}
Aber anscheinend habe ich noch nicht ganz den Hintergrund von [phpf]eval[/phpf], denn statt mir einfach das Ergebnis auszugeben, gibt er genau das aus, was in der .txt steht => 1+1 . Oder sollte ich das ganze etwa mit Arrays verknüpfen, die ich vorher versuche zusammenzulegen, damit daraus ein ganzer String wird und somit eval den String auflösen kann?

mfG Disap
 

stanleyB

Erfahrenes Mitglied
PHP:
eval("echo " .file_get_contents($file). ";");

<edit>
Den Source bitte nicht 1:1, ohne Validierung von $file, uebernehmen.
Koennte naemlich in Bezug auf einen aktiven "fopen_url_wrapper" ganz boese ins Auge gehen.
</edit>

Gruesse,
stanleyB
 
Zuletzt bearbeitet:

Neue Beiträge

Forum-Statistiken

Themen
272.361
Beiträge
1.558.639
Mitglieder
187.834
Neuestes Mitglied
jordanx0206