Frage output in array einlesen

Hallo NG,

ich versuche gerade eine Ausgabe, die ich via System erhalten habe in
ein array zu packen:

Maindir/
Maindir/mainfile.txt
Maindir/Subdir/
Maindir/Subdir/subfile.txt
Maindir2/

Ich möchte ein array in dem dann:

array[0]= "Maindir/"
array[1]= "Maindir/mainfile.txt"

steht, aber irgendwie weis ich nicht welche Funktion dafür am
geeignetesten ist, split und explode scheinen mir da nichts zu bringen.

Danke Stefan
Stefan Braumeister [ Mi, 08 August 2007 12:12 ] [ ID #1789811 ]

Re: Frage output in array einlesen

Stefan Braumeister schrieb:
> steht, aber irgendwie weis ich nicht welche Funktion dafür am
> geeignetesten ist, split und explode scheinen mir da nichts zu bringen.

Wenn der Output so wie gepostet ist, dann sollte explode() genau richtig
sein (split() zur Not aber auch).


Gruß,
Habbo
bruening [ Mi, 08 August 2007 12:09 ] [ ID #1789812 ]

Re: Frage output in array einlesen

Jan Habbo Brüning schrieb:
> Stefan Braumeister schrieb:
>> steht, aber irgendwie weis ich nicht welche Funktion dafür am
>> geeignetesten ist, split und explode scheinen mir da nichts zu bringen.
>
> Wenn der Output so wie gepostet ist, dann sollte explode() genau richtig
> sein (split() zur Not aber auch).
Den Putput habe ich durch print_r($result) bekommen.
>
>
> Gruß,
> Habbo
Dann scheine ich wohl den falschen delimiter zu nehmen, habs mit

$result = system($command);
print_r($result);
$lines = explode(" ", $result, -1);

habs mit verschiedenen delimitern versucht \n od \r od \n\r,
aber ich bekomme immer nur die letzte Zeile im Array.
Stefan Braumeister [ Mi, 08 August 2007 12:27 ] [ ID #1789815 ]

Re: Frage output in array einlesen

Stefan Braumeister wrote:

> $result = system($command);
> print_r($result);
> $lines = explode(" ", $result, -1);
>
> habs mit verschiedenen delimitern versucht \n od \r od \n\r,
wasn das? ^^^^

Windows nutzt <CR><LF> (\r\n), Unixe <LF> (\n) und Macs <CR> (\r)

Wenn man also alles ohne weiter drüber nachzudenken abdenken will nutzt
man z.B.: preg_split('~(\r\n|\n|\r)~', $str)

MfG, Ulf
Ulf Kadner [ Mi, 08 August 2007 13:27 ] [ ID #1789829 ]

Re: Frage output in array einlesen

Ulf Kadner schrieb:
> Stefan Braumeister wrote:
>
>> $result = system($command);
>> print_r($result);
>> $lines = explode(" ", $result, -1);
>>
>> habs mit verschiedenen delimitern versucht \n od \r od \n\r,
> wasn das? ^^^^
>
> Windows nutzt <CR><LF> (\r\n), Unixe <LF> (\n) und Macs <CR> (\r)

Oh mann ich glaube ich spinne, in meiner Variable($result =
system($command);) stand gar nicht:

/
Maindir/
Maindir/mainfile.txt
Maindir/Subdir/
Maindir/Subdir/subfile.txt
System/
Maindir2/

drin sondern nur "Maindir2", der output davor kommt vom Aufruf system.
Da kann ich lange explode etc. anwenden:-)

Interpretiere ich das manual falsch?
Ich dachte system schreibt nicht wie passthru direkt raus?
Sondern die komplette Ausgabe in string.

>
> Wenn man also alles ohne weiter drüber nachzudenken abdenken will nutzt
> man z.B.: preg_split('~(\r\n|\n|\r)~', $str)
>
> MfG, Ulf
Stefan Braumeister [ Mi, 08 August 2007 14:16 ] [ ID #1789839 ]

Re: Frage output in array einlesen

Stefan Braumeister schrieb:
> Ulf Kadner schrieb:
>> Stefan Braumeister wrote:
>>
>>> $result = system($command);
>>> print_r($result);
>>> $lines = explode(" ", $result, -1);
>>>
>>> habs mit verschiedenen delimitern versucht \n od \r od \n\r,
>> wasn das? ^^^^
>>
>> Windows nutzt <CR><LF> (\r\n), Unixe <LF> (\n) und Macs <CR> (\r)
>
> Oh mann ich glaube ich spinne, in meiner Variable($result =
> system($command);) stand gar nicht:

Ich verwende seit Ewigkeiten immer exec() wenn ich was externes Aufrufen
muss. Ueber den 2. Parameter bekommst du ein Array mit den Ausgaben. Pro
Zeile ein Eintrag im Array.

Gruss
Joerg



--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ Mi, 08 August 2007 14:36 ] [ ID #1789842 ]

Re: Frage output in array einlesen

Ulf Kadner schrieb:

Interpretiere ich das manual falsch?
Ich dachte system schreibt nicht wie passthru direkt raus?
Sondern die komplette Ausgabe in string.

Ich weiß nicht, welches Manual Du benutzt. Meins schreibt zu System:
"Gibt die letzte Zeile der Befehlsausgabe bei Erfolg, andernfalls FALSE
zurück".

Gruß. Claus
Claus Reibenstein [ Mi, 08 August 2007 14:53 ] [ ID #1789844 ]

Re: Frage output in array einlesen

Stefan Braumeister schrieb:

> Ich dachte system schreibt nicht wie passthru direkt raus?
> Sondern die komplette Ausgabe in string.

System gibt nur die letzte Zeile der Befehlsausgabe zurück.

Gruß. Claus
Claus Reibenstein [ Mi, 08 August 2007 14:54 ] [ ID #1789845 ]

Re: Frage output in array einlesen

Joerg Behrens schrieb:
> Stefan Braumeister schrieb:
>> Ulf Kadner schrieb:
>>> Stefan Braumeister wrote:
>>>
>>>> $result = system($command);
>>>> print_r($result);
>>>> $lines = explode(" ", $result, -1);
>>>>
>>>> habs mit verschiedenen delimitern versucht \n od \r od \n\r,
>>> wasn das? ^^^^
>>>
>>> Windows nutzt <CR><LF> (\r\n), Unixe <LF> (\n) und Macs <CR> (\r)
>>
>> Oh mann ich glaube ich spinne, in meiner Variable($result =
>> system($command);) stand gar nicht:
>
> Ich verwende seit Ewigkeiten immer exec() wenn ich was externes Aufrufen
> muss. Ueber den 2. Parameter bekommst du ein Array mit den Ausgaben. Pro
> Zeile ein Eintrag im Array.

Ja habe ich jetzt auch so gemacht:-)

>
> Gruss
> Joerg
>
>
>
Stefan Braumeister [ Mi, 08 August 2007 15:02 ] [ ID #1789847 ]

Re: Frage output in array einlesen

Hallo zusammen,

Joerg Behrens schrieb:
> Ich verwende seit Ewigkeiten immer exec() wenn ich was externes Aufrufen
> muss. Ueber den 2. Parameter bekommst du ein Array mit den Ausgaben. Pro
> Zeile ein Eintrag im Array.

Kann es sein, dass das so auch nicht immer
funktioniert? Ich habe kürzlich ein Script
geschrieben, in dem ich einen Apache
starten/beenden wollte. Dabei kam der Fehler, dass
ein Parameter nicht korrekt war. Bei der Benutzung
von exec wurde der 2. angegebene Parameter
allerdings nicht verändert. Habe die Ausgabe dann
per Weiterleitung der Rückgabe in eine Datei
erhalten. Gibt es da irgend einen bekannten Grund,
wo dran das liegen kann, der weder exec noch
system noch passthru sich in irgendeiner Weise
dazu bewegen lassen, etwas zurückzugeben?

Die Rückgabe war nur die Seite, die auch beim
Aufruf mit -h angezeigt wurde sowie eine Zeile, in
etwa "invalid option: --k".

Viele Grüße, Lucas
Lucas Heuvelmann [ Mi, 08 August 2007 23:43 ] [ ID #1789857 ]
PHP » de.comp.lang.php.misc » Frage output in array einlesen

Vorheriges Thema: Feste Transsid für Suchmaschinen?
Nächstes Thema: seltsames Error Verhalten