Re: [PHP] stdout as input

2009-09-24 Thread Tommy Pham
- Original Message 
 From: Christoph Boget christoph.bo...@gmail.com
 To: PHP General php-general@lists.php.net
 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: [PHP] stdout as input

2009-09-24 Thread 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: [PHP] stdout as input

2009-09-24 Thread bdunlap
 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

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] stdout as input

2009-09-24 Thread 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: [PHP] stdout as input

2009-09-24 Thread Christoph Boget
 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);

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