stdout as input
am 24.09.2009 15:51:56 von Christoph Boget
I've read the section in the docs about i/o streams and other related
sections I was able to find but couldn't figure out how to do what I
need. From the command line, I'm trying to pipe stdout in to my php
script which should then see it as input. A simplistic example would
be:
echo bob | myScript.php
In myScript.php, I'm doing:
$handle = popen( 'php://stdin', 'r' );
echo var_export( $handle, TRUE ) . "\n\n";
I've also tried php://stdout and php://input. I also tried eschewing
the php:// pseudo protocol and popen altogether and going with the
STDIN and STDOUT constants. None of that worked. Is there a way I
can pipe/redirect output from a command line uhh, command as input to
my script?
thnx,
Christoph
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: stdout as input
am 24.09.2009 17:28:45 von Tommy Pham
----- Original Message ----
> From: Christoph Boget
> To: PHP General
> Sent: Thursday, September 24, 2009 6:51:56 AM
> Subject: [PHP] stdout as input
>
> I've read the section in the docs about i/o streams and other related
> sections I was able to find but couldn't figure out how to do what I
> need. From the command line, I'm trying to pipe stdout in to my php
> script which should then see it as input. A simplistic example would
> be:
>
> echo bob | myScript.php
>
> In myScript.php, I'm doing:
>
> $handle = popen( 'php://stdin', 'r' );
> echo var_export( $handle, TRUE ) . "\n\n";
>
> I've also tried php://stdout and php://input. I also tried eschewing
> the php:// pseudo protocol and popen altogether and going with the
> STDIN and STDOUT constants. None of that worked. Is there a way I
> can pipe/redirect output from a command line uhh, command as input to
> my script?
>
> thnx,
> Christoph
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
Isn't it simpler with
http://www.php.net/manual/en/function.shell-exec.php
?
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: stdout as input
am 24.09.2009 17:35:45 von Christoph Boget
> Isn't it simpler with
> http://www.php.net/manual/en/function.shell-exec.php
> ?
Perhaps. But the command to execute would be relatively arbitrary.
What I'm trying to do is set up a script that will filter the results
of a grep. But what I'm grepping and where I'm starting from would
change. I suppose I could pass those arguments to my script and
access it using argv but I'm actually kind of curious how (if) I can
access output which has been piped (or redirected) to my script.
thnx,
Christoph
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: stdout as input
am 24.09.2009 18:00:27 von Ben Dunlap
> echo bob | myScript.php
>
> In myScript.php, I'm doing:
>
> =A0$handle =3D popen( 'php://stdin', 'r' );
> =A0echo var_export( $handle, TRUE ) . "\n\n";
What output are you getting from those lines, and what were you
expecting? $handle is just a resource, same as if you opened a regular
file -- you still need to read data from it with something like
fgets().
If I'm writing a quick-and-dirty script to process piped-in data, I
find this construct to work reasonably well:
while(!feof(STDIN)) {
$line =3D fgets(STDIN);
// trim() $line here if I don't want trailing/vertical whitespace
// now do something with $line
}
The one weakness of that form is that I always get an empty line at
the end, but as long as I check for that in the loop (which I should
usually be doing anyway), it's no problem.
Ben
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: stdout as input
am 24.09.2009 18:06:37 von Shawn McKenzie
bdunlap wrote:
>> echo bob | myScript.php
>>
>> In myScript.php, I'm doing:
>>
>> $handle = popen( 'php://stdin', 'r' );
>> echo var_export( $handle, TRUE ) . "\n\n";
>
> What output are you getting from those lines, and what were you
> expecting? $handle is just a resource, same as if you opened a regular
> file -- you still need to read data from it with something like
> fgets().
>
> If I'm writing a quick-and-dirty script to process piped-in data, I
> find this construct to work reasonably well:
>
> while(!feof(STDIN)) {
> $line = fgets(STDIN);
>
> // trim() $line here if I don't want trailing/vertical whitespace
>
> // now do something with $line
> }
>
> The one weakness of that form is that I always get an empty line at
> the end, but as long as I check for that in the loop (which I should
> usually be doing anyway), it's no problem.
>
> Ben
Exactly. And if you just want redirected data you can try:
$data = file_get_contents("php://stdin");
--or--
For an array of lines:
$lines = file("php://stdin");
--
Thanks!
-Shawn
http://www.spidean.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: stdout as input
am 24.09.2009 18:40:32 von Christoph Boget
> Exactly. =A0And if you just want redirected data you can try:
> $data =3D file_get_contents("php://stdin");
> --or--
> For an array of lines:
> $lines =3D file("php://stdin");
This is exactly what I was looking for. Thanks Shawn and Ben!
thnx,
Christoph
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php