A slightly less cumbersome method than the while() loop below would be a foreach() loop:
function check_file($filename) { if (!$lines = file($filename)) { return false; } foreach ($lines as $line) { $num_pipes = substr_count($line, '|'); if ($num_pipes < 2 || $num_pipes > 4) { return false; } } return true; } Same result, probably absolutely no measurable (and we're talking fractions of microseconds here) difference in speed, but much easier to read. Mike Frazer "Lars Torben Wilson" <[EMAIL PROTECTED]> wrote in message 1012602758.3230.127.camel@ali">news:1012602758.3230.127.camel@ali... > On Fri, 2002-02-01 at 14:02, toni baker wrote: > > I would like to prevent users from uploading a file > > that contains more than 4 pipes or less than 2 pipes. > > The code below prevents users from uploading a file > > containing more than 4 pipes, but not less than 2 > > pipes. Should I use awk, ereg, or sed? Thanks > > Unless you *have* to spawn processes to do this for you > for some reason, you can keep things a lot simpler by > doing it in PHP, something like this: > > <?php > error_reporting(E_ALL); > > function check_file($filename) { > if (!$upload_file = file($filename)) { > return false; > } > while (list(, $line) = each($upload_file)) { > $num_pipes = substr_count($line, '|'); > if ($num_pipes < 2 || $num_pipes > 4) { > return false; > } > } > return true; > } > > $userfile = 'testpipes.txt'; > if (check_file($userfile)) { > echo "File passed.\n"; > } else { > echo "File failed.\n"; > } > > ?> > > > Hope this helps, > > Torben > > > system ("/bin/cat $userfile|/bin/sed -n > > 's/.*|.*|.*|.*|.*|/&/p'> pipes.txt; > > $fd =fopen("pipes.txt", 'r'); > > $pipes5=fgets($fd,50); > > echo ($pipes5); > > fclose($fd); > > > > if ($pipes5) { > > print "wrong number of pipes"; > > } > > > > The uploaded file below should not pass but it does: > > > > aaaaa|bbbbb|ccccc|ddddd|eeeee > > aaaaa|bbbbb|ccccc| > > aaaaa|bbbbb|ccccc|ddddd > > aaaaa|bbbbb > > aaaaa|bbbbb|ccccc|ddddd|eeeee > > -- > Torben Wilson <[EMAIL PROTECTED]> > http://www.thebuttlesschaps.com > http://www.hybrid17.com > http://www.inflatableeye.com > +1.604.709.0506 > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php