Actually, there appears to be a solution on the PHP.web [http://www.php.net/manual/en/function.fgets.php]
"Note: The length parameter became optional in PHP 4.2.0, if omitted, it would assume 1024 as the line length. As of PHP 4.3, omitting length will keep reading from the stream until it reaches the end of the line. If the majority of the lines in the file are all larger than 8KB, it is more resource efficient for your script to specify the maximum line length. " Thanks :-) Matt Vos wrote: > Loop an fgets() > > i.e. > $fp = fopen($file) > while ($filerow = fgets($fp,1024)) /* Read 1024 bytes or to EOL, whichever > is first) */ > { > $filerow = str_replace("; ","", $filerow); > $filerow = str_replace("# ","", $filerow); > $filerow = str_replace("\r","", $filerow); > $size = strlen($filerow); > $row_split = preg_split("/\s+/", $filerow); > > $value1 = $row_split[0]; > $value2 = $row_split[1]; > $value3 = $row_split[2]; > } > > Matt > ----- Original Message ----- > From: Lee P. Reilly <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Tuesday, November 26, 2002 2:58 PM > Subject: [PHP] Upload problem - PC, *nix, and Max EOL characters > > > Hi everyone, > > > > I have an application, where users can upload data files formatted as > > follows: > > > > 0.0106375 686.601 65.391 > > 0.01147 606.467 54.997 > > 0.0122815 640.284 46.5355 > > 0.0130753 668.396 39.3671 > > 0.0138809 690.05 34.6031 > > 0.0146936 619.947 30.5329 > > 0.0155071 640.413 26.9145 > > > > > > My code deals with the uploaded files by splitting the lines into an > > array, and then obtaining the 3 particular fields from the array > > elements. My code is something like this: > > > > -=-= BEGIN CODE =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > // put each line of the file into an array > > $filearray = file($file); > > > > // parse the file one line... at... a... time > > while (list(,$oneline) = each($filearray)) > > { > > // if the line starts with ";" or a "#"... > > if ($oneline[0]==";" || $oneline[0]=="#") > > { > > // take out the ";" and EOL characters > > $oneline = str_replace("; ","", $oneline); > > $oneline = str_replace("# ","", $oneline); > > $oneline = str_replace("\r","", $oneline); > > $size = strlen($oneline); > > } > > > > /* Some IQ files seperated columns by tabs; others, by whitespace. > > We parse the data file are delimit the columns by 'X9728430182298Z' > > (a random string), which will allow the program to recognise the > > start > > and end of each column. > > > > e.g. > > 0.00542 8691.64 901.605 > > 0.006775 9381.3 1235.78 becomes... > > > > 0.00542X9728430182298Z8691.64X9728430182298Z901.605 > > 0.006775X9728430182298Z9381.3X9728430182298Z1235.78 > > */ > > > > $oneline = ltrim($oneline); > > $oneline = preg_replace("/\s+/", "X9728430182298Z", $oneline); > > $text = explode ("X9728430182298Z", $oneline); // now element [0] = Q, > > [1] = I. [2] = Error > > > > -=-= END CODE =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > > > This works perfectly well when the data is uploaded from a PC, but it > > fails when it's uploaded from Mac/Unix. When I vied the uploaded file > > the EOL characters *appear* as " > > ", which I believe is actually "\n". When I output the contents of > > $filearray[0] (uploaded via a PC) I get one line, but when I ouput > > $filearray[0] from a file uploaded via a Mac I get the entire file. > > Therefore the problem occurs with: > > > > $filearray = file($file); > > while (list(,$oneline) = each($filearray)) > > > > I thought I had found a solution to the problem on the web* where I > > found the following extract of php.ini file: > > > > -------------------------- > > ; If your scripts have to deal with files from Macintosh systems, > > ; or you are running on a Mac and need to deal with files from > > ; unix or win32 systems, setting this flag will cause PHP to > > ; automatically detect the EOL character in those files so that > > ; fgets() and file() will work regardless of the source of the file. > > ; auto_detect_line_endings = Off > > -------------------------- > > > > However, this never solved the problem. > > > > The file itself is stored in a database, so how can I get rid of the EOL > > characters before it is being inserted? Is there a function to change > > the Unix EOL chars to PC EOL chars? > > > > Thanks in advance. > > > > - Best regards, > > Lee Reilly > > > > > *[http://216.239.33.100/search?q=cache:GwerlDVFv8wC:linux.sarang.net/ftp/mir > ror/development/language/php_cvs/php4/php.ini-dist+MAC+EOL+character+PHP&hl= > en&ie=UTF-8] > > > > -- > > Lee P. Reilly, ms:G758 > > Szilard Resource, tel:505-665-7025 > > Bioscience Division, > > SM-30 Bikini Atoll Rd, > > Los Alamos National Laboratory, mailto:[EMAIL PROTECTED] > > Los Alamos, NM 87545. http://home.lanl.gov/lreilly > > > > "Quidquid latine dictum sit, altum viditur" > > > > -._ _.--'"`'--._ _.--'"`'--._ _.--'"`'--._ _ > > '-:`.'|`|"':-. '-:`.'|`|"':-. '-:`.'|`|"':-. '.` : '. > > '. '. | | | |'. '. | | | |'. '. | | | |'. '.: '. '. > > : '. '.| | | | '. '.| | | | '. '.| | | | '. '. : '. `. > > ' '. `.:_ | :_.' '. `.:_ | :_.' '. `.:_ | :_.' '. `.' `. > > `-..,..-' `-..,..-' `-..,..-' ` ` > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Lee P. Reilly, ms:G758 Szilard Resource, tel:505-665-7025 Bioscience Division, SM-30 Bikini Atoll Rd, Los Alamos National Laboratory, mailto:[EMAIL PROTECTED] Los Alamos, NM 87545. http://home.lanl.gov/lreilly "Quidquid latine dictum sit, altum viditur" -._ _.--'"`'--._ _.--'"`'--._ _.--'"`'--._ _ '-:`.'|`|"':-. '-:`.'|`|"':-. '-:`.'|`|"':-. '.` : '. '. '. | | | |'. '. | | | |'. '. | | | |'. '.: '. '. : '. '.| | | | '. '.| | | | '. '.| | | | '. '. : '. `. ' '. `.:_ | :_.' '. `.:_ | :_.' '. `.:_ | :_.' '. `.' `. `-..,..-' `-..,..-' `-..,..-' ` ` -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php