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