nl2br bei system Ausgabe

nl2br bei system Ausgabe

am 28.06.2006 09:15:01 von joerg p

Hallo,

ich habe mit system einige Rückgabewerte, die ich gerne im Browser auch
untereinander ausgeben würde. Allerdings funktioniert
nl2br(system('befehl')) nicht.

Wie mache ich das?

Jörg

Re: nl2br bei system Ausgabe

am 28.06.2006 10:34:11 von Ulf Kadner

joerg pfeffer wrote:

> ich habe mit system einige Rückgabewerte, die ich gerne im Browser auch
> untereinander ausgeben würde. Allerdings funktioniert
> nl2br(system('befehl')) nicht.

Wie kommst Du zu dieser Annahme?

Test:

$teststr = "A\r\nB\nC\rD";
echo str_replace(
array("\r","\n"),
array("",""),
nl2br($teststr)
);

Ausgabe:
A
B
C
D

Also alles OK.
Ergo enthaelt Dein String keine Newlines (\n) oder car. Returns (\r)

MfG, Ulf

Re: nl2br bei system Ausgabe

am 28.06.2006 10:58:33 von Stefan Scholl

joerg pfeffer wrote:
> ich habe mit system einige Rückgabewerte, die ich gerne im Browser auch
> untereinander ausgeben würde. Allerdings funktioniert
> nl2br(system('befehl')) nicht.

Die Anleitung zu system() sagt bei "Return Value": Returns the
last line of the command output on success, and FALSE on failure.


Unter "See Also" findet man exec(). Damit kann man sich alle
Ausgabezeilen in ein Array speichern lassen.

Am Ende also kein Job für nl2br(), sondern für implode().



--
Web (en): http://www.no-spoon.de/ -*- Web (de): http://www.frell.de/

Re: nl2br bei system Ausgabe

am 28.06.2006 13:44:57 von Stefan Dreyer

joerg pfeffer wrote:
> Hallo,
>
> ich habe mit system einige Rückgabewerte, die ich gerne im Browser auch
> untereinander ausgeben würde. Allerdings funktioniert
> nl2br(system('befehl')) nicht.
>
> Wie mache ich das?
Wenn Du es einfach haben willst:

echo '

';
passthru(system('befehl'));
echo '
';

Re: nl2br bei system Ausgabe

am 28.06.2006 14:13:54 von Stefan Scholl

Stefan Scholl wrote:
> Unter "See Also" findet man exec(). Damit kann man sich alle
> Ausgabezeilen in ein Array speichern lassen.
>
> Am Ende also kein Job für nl2br(), sondern für implode().

Äh, ganz vergessen: Kein implode(), sondern foreach. Wir wollen
ja das htmlspecialchars() pro Zeile nicht vergessen, oder? :-}


--
Web (en): http://www.no-spoon.de/ -*- Web (de): http://www.frell.de/

Re: nl2br bei system Ausgabe

am 28.06.2006 14:54:18 von joerg p

> Wenn Du es einfach haben willst:
>
> echo '

';
> passthru(system('befehl'));
> echo '
';

Super! Vielen Dank, genau das, was ich gesucht habe...
Jörg

Re: nl2br bei system Ausgabe

am 28.06.2006 18:34:13 von Andreas Otto

Stefan Scholl schrieb:
> Äh, ganz vergessen: Kein implode(), sondern foreach. Wir wollen
> ja das htmlspecialchars() pro Zeile nicht vergessen, oder? :-}

och, geht aber noch schöner:

if($ret =3D exec($bla))
echo implode('
', array_map('htmlspecialchars', $ret));


:)

Re: nl2br bei system Ausgabe

am 28.06.2006 18:45:52 von Frank Schenk

Andreas Otto wrote:
> Stefan Scholl schrieb:
>
>>Äh, ganz vergessen: Kein implode(), sondern foreach. Wir wollen
>>ja das htmlspecialchars() pro Zeile nicht vergessen, oder? :-}
>
>
> och, geht aber noch schöner:
>
> if($ret = exec($bla))
> echo implode('
', array_map('htmlspecialchars', $ret));

Netter Versuch.


Return Values

The last line from the result of the command. If you need to execute a
command and have all the data from the command passed directly back
without any interference, use the passthru() function.

To get the output of the executed command, be sure to set and use the
output parameter.

http://de.php.net/manual/en/function.exec.php


gruß, Frank