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/mirror/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