| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

09-03-2009, 20:20
|
|
Jule
Newbie
|
|
Registriert seit: Sep 2005
Beiträge: 54
|
|
Textdateien mit AS und php auslesen
Hallo,
ich habe folgendes Problem. In einer Textdatei werden mittels Variablen Werte gespeichert, die dann in Flash via AS ausgelesen werden. (&wert1=value)
Nun will ich diese Werte über eine php-Oberfäche bearbeiten. Gibt es eine Möglichkeit, wie ich das, was hinter dem "=" steht, seperat auslesen bzw. bearbeiten kann? Bisher habe ich nur die Möglichkeit des zeilenweisen Auslesens gefunden aber da wäre ja immer die Variablendeklaration für AS mit dabei ...
Ich hoffe, ich habs verständlich ausgedrückt und bin gespannt auf Eure Anregungen ...
|

09-03-2009, 20:24
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
|

09-03-2009, 20:26
|
|
Jule
Newbie
|
|
Registriert seit: Sep 2005
Beiträge: 54
|
|
Ähm ... leider hab ich bisher noch nix mit Klassen zu tun gehabt. Das geht doch auch ohne, oder? Die Fehleranfälligkeit ist in diesem Fall nicht unbedingt relevant ...
|

09-03-2009, 20:35
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
im prinzip schon. müsste sogar eine vergleichbare Funktion geben:
parse_str
parse_url
extract
Da du die Klasse aber nur (wie eine Funktion) anwenden brauchst, sollte das eigentlich auch kein Hindernis darstellen...
|

09-03-2009, 20:44
|
|
php_fussel
Newbie
|
|
Registriert seit: Jan 2009
Beiträge: 120
|
|
Hallo,
spontan fällt mir dazu erst mal preg_match_all ein (reguläre Ausdrücke). Damit kann man erst einen kompletten Satz auslesen (also Variable mit Wert), anschließend nur den Wert mit preg_replace ersetzen. Da müßtest Du Dir was basteln ... ob es hier jemand für Dich tut?
Gruß php_fussel
|

09-03-2009, 21:05
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
und warum nicht einfach die werte im array bearbeiten?
|

09-03-2009, 21:12
|
|
Jule
Newbie
|
|
Registriert seit: Sep 2005
Beiträge: 54
|
|
Das Bearbeiten ist im Grunde genommen kein Problem weil ich die entprechende Variablenbezeichnung ja einfach vor den Wert packen kann, bevor ich das ganze in die txt-file schreibe.
Das "Problem" ist eher, wie ich eben jene Bezeichnung "wegschneide" um nur den Wert als vorgegebenen Value in einem Formularfeld einzutragen.
Ich glaube arrays sind eine möglichkeit ... ich setz mich mal ran ...
|

09-03-2009, 21:16
|
|
php_fussel
Newbie
|
|
Registriert seit: Jan 2009
Beiträge: 120
|
|
Ach so, Du meinst die Variable als array-key nutzen und den Wert als dazugehörigen ... ja, Wert eben  ! Und diesen könnte man dann bearbeiten/ändern ... geht auch! Dann stellt sich die Frage, wie man es anstellt, dass die Werte erst mal ins array kommen!?
Gruß php_fussel
|

09-03-2009, 21:20
|
|
Jule
Newbie
|
|
Registriert seit: Sep 2005
Beiträge: 54
|
|
Über die fWrite? so ganz spontan jetzt ...
|

09-03-2009, 21:22
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Zitat:
|
Dann stellt sich die Frage, wie man es anstellt, dass die Werte erst mal ins array kommen!?
|
Fussel, lies doch einfach den Thread noch einmal von Anfang an durch. Die Lösungen stehen schon in diversen Ausführungen dort!
Einlesen funktioniert über fWRITE denkbar schlecht.  Das rückschreiben des Arrays nachher in die Datei kann natürlich so funktionieren.
|

10-03-2009, 11:07
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zum Zerlegen von Query-Strings hätte ich folgende Funktion anzubieten.
Sie sieht komplizierter aus, als sie ist, weil ein paar Fehler abgefangen
und einige Sonderbedingungen beachtet werden:
PHP-Code:
function aufdroesel(
$input = '' /// STR
) {
$parts = preg_split('/[&;]/', $input, -1, PREG_SPLIT_NO_EMPTY);
$data = array ();
foreach ($parts as $part) {
@list ($name, $value) = preg_split('/=/', $part);
// note: rawurldecode() does not work; it ignores '+'-encoded spaces
$name_decoded = urldecode($name);
// handle multiple entries sharing the same $name; eg: &bla=x&bla=y&bla=z
if (isset($data[$name_decoded])) {
if (!is_array($data[$name_decoded])) {
// convert previous entry to LIST and add actual entry
$data[$name_decoded] = array ($data[$name_decoded]);
}
$data[$name_decoded][] = urldecode($value); // add to LIST
}
else {
$data[$name_decoded] = urldecode($value);
}
} /// end foreach $parts
return $data;
}
// anwendungsbeispiel:
$query = '&bla=blo&brat=wurst&bier=fass&novalue=&=noname&=';
$array = aufdroesel($query);
var_dump($array);
Im Kern wird zweimal preg_split() verwendet (prinzipiell würde es auch explode() tun): einmal, um an den '&' aufzutrennen und das zweite mal in der foreach()-Schleife, um an den '=' aufzutrennen.
Urldecode() kannst du notfalls auch weglassen, wenn du dir ganz sicher bist, dass $name und $value keine Zeichen enthalten, die Probleme machen könnten -- bspw. '&' und '=', die ja eine Sonderfunktion erfüllen.
Das Einlesen aus einer Textdatei gestaltet sich je nach deren Format:
Hast du nur eine Zeile mit so einem String, dann genügt im Notfall sowas wie
$query_string = trim(file_get_contents($datei));
Hast du mehrere solcher Strings zeilenweise hintereinander in der Datei, dann musst du die auch so einlesen. Fgets() wäre hier geeignet.
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
|

10-03-2009, 15:13
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Original geschrieben von fireweasel
Zum Zerlegen von Query-Strings hätte ich folgende Funktion anzubieten.
|
Und die soll jetzt was genau besser können als bspw. parse_str?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

10-03-2009, 18:35
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Original geschrieben von wahsaga
Und die soll jetzt was genau besser können als bspw. parse_str?
|
Oooch nee, nicht schon wieder:
Sie lässt '.' und ' ' in den Namen der Parameter(-Keys) unverändert, wird nicht durch magic_quotes_gpc beeinflusst und verzichtet auf die '[]'-Spielereien.
Siehe auch das PHP-Handbuch zu parse_str():
Zitat:
|
Note: The magic_quotes_gpc setting affects the output of this function, as parse_str() uses the same mechanism that PHP uses to populate the $_GET, $_POST, etc. variables.
|
Aber ich vermute mal, das wusstest du alles schon ...
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
|

10-03-2009, 18:38
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Schön und gut - ich meinte nur, in Bezug auf die hier konkret vorliegende Fragestellung ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

10-03-2009, 18:47
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Re: Textdateien mit AS und php auslesen
*grml* von wegen "no need to ask questions" ...
Zitat:
Original geschrieben von Großer_Meister
Schön und gut - ich meinte nur, in Bezug auf die hier konkret vorliegende Fragestellung ...
|
Nun denn will ich mal versuchen, eine eventuell geeignete Vorgehensstrategie mit einfachen Worten zu skizzieren:
Zitat:
Original geschrieben von Jule (=== OP)
Hallo,
ich habe folgendes Problem. In einer Textdatei werden mittels Variablen Werte gespeichert, die dann in Flash via AS ausgelesen werden. (&wert1=value)
|
1.) Text-Datei einlesen ...
2.) In assoziatives Array umwandeln bspw. per aufdroesel() ...
Zitat:
|
Nun will ich diese Werte über eine php-Oberfäche bearbeiten. Gibt es eine Möglichkeit, wie ich das, was hinter dem "=" steht, seperat auslesen bzw. bearbeiten kann? Bisher habe ich nur die Möglichkeit des zeilenweisen Auslesens gefunden aber da wäre ja immer die Variablendeklaration für AS mit dabei ...
|
3.) HTML-Formular aus dem assoziativen Array basteln
4.) HTML-Formular an einen Browser schicken
...
5.) HTML-Formular im Browserfenster editieren -- zumindest assoziiere ich das mit "über eine PHP-Oberfläche bearbeiten".
...
6.) Editierte Daten wieder in die Ursprungsform (was Query-String-Ähnliches) bringen
7.) Ursprungsform wieder in Datei speichern (per fwrite()? ...)
Zitat:
|
Ich hoffe, ich habs verständlich ausgedrückt und bin gespannt auf Eure Anregungen ...
|
Ich hoffe auch, dass ich mich jetzt verständlich(er als vorher) ausgedrückt habe.
Dass wir derzeit noch die Punkte 3 bis 6 offen haben, darf mir aber keiner in die Schuhe schieben ...
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
Geändert von fireweasel (10-03-2009 um 18:56 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|