B.4 CLI Now Allows Individual Line Processing

The PHP 5 command-line version now allows individual line processing, similar to Perl and awk.

Use these flags on the command line to alter PHP's behavior:


-B

Run this code before processing the file. This is similar to auto_prepend_file.


-R

Run this code on each line of the file.


-E

Run this code at the end of processing the file. This is similar to auto_append_file.

The contents of the current line are available in $argn. This simple example prints each line of example.txt:

$ php -R 'print "$argn\n" ;' < example.txt

1

2

3

4

5

The current line number is stored in $argi. The first line of the file is line 1 (not 0). So, to print out select lines of a file, do this:

$ php -B '$start = 2; $stop = 4;' -R 'if ($argi >= $start &&

  $argi <= $stop) print "$argn\n";' < example.txt

2

3

4

Modifying standard input disrupts the flow. For instance:

$ php -R 'print fgets(STDIN);' < example.txt

2

4

Using the -R flag causes PHP to read in one line from standard input. Therefore, when you call fgets( ), you read in a second line. This results in "missing" lines because both PHP and you are processing the file.