Go4Expert

Go4Expert (http://www.go4expert.com/)
-   PHP (http://www.go4expert.com/forums/php/)
-   -   Reading text problem (carriage return character) (http://www.go4expert.com/forums/reading-text-carriage-return-character-t5463/)

coool 25Jul2007 18:50

Reading text problem (carriage return character)
 
Hi :)


I'm using PHP to read row by row a text file and insert it in my database

everything is working fine, BUT ! i've noticed that about 10 columns have a return charachter - that's making a problem because the php consider these return charachters as a new line (new row)

example:

apple 1 fruit
orange 2 fruit
bana
na 1 fruit
___________________

PHP Code:

    $output str_replace("\t""|"$data);
    
$values explode("\n"$output,-1);
    foreach(
$values as $row)
    {
             
$col explode("|"$row);
             
//... etc
    


how can i escape or replace the \n in the column value by a space !!!

i tried to str_replcae all \n by a space

but that doesn't work as this removes all \n i.e there's only one row to read which contains all the data

pradeep 25Jul2007 20:41

Re: Reading text problem (carriage return character)
 
Use fscanf,

PHP Code:

$handle fopen("users.txt""r");
while (
$userinfo fscanf($handle"%s\t%s\t%s\n")) {
    list (
$name$profession$countrycode) = $userinfo;
    
//... do something with the values
}
fclose($handle); 


coool 25Jul2007 20:55

Re: Reading text problem (carriage return character)
 
Quote:

Originally Posted by pradeep
Use fscanf,

PHP Code:

$handle fopen("users.txt""r");
while (
$userinfo fscanf($handle"%s\t%s\t%s\n")) {
    list (
$name$profession$countrycode) = $userinfo;
    
//... do something with the values
}
fclose($handle); 


oh what i've given you is a small example

I actually have 46 columns and 30000 rows
so should i do this ??? while "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t% s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\ t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t% s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\ t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t% s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\ t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n !!?????

pradeep 25Jul2007 21:34

Re: Reading text problem (carriage return character)
 
specify the format for each record (or each line)

coool 25Jul2007 21:48

Re: Reading text problem (carriage return character)
 
okay the last record of every line is a number (not a character)

i.e. why don't i say... replace all \n that is after a character with a space !!

I'm trying to form the regx !!

this doesn't work but it's near !

PHP Code:

    $data preg_replace("\[a-zA-Z]\\n\$""\\s"$data); 

any help in forming the regx please !?

pradeep 25Jul2007 21:59

Re: Reading text problem (carriage return character)
 
PHP Code:

$data preg_replace("/([^\d]+)\\n/""$1 "$data); 


coool 25Jul2007 22:00

Re: Reading text problem (carriage return character)
 
oh no

I don't want to replace the final \n

i want to replace the \n that is inside one of the values by a space

:)

coool 25Jul2007 22:06

Re: Reading text problem (carriage return character)
 
imagine that this is the example

apple 1 fruit 74
orange 2 fruit 213
bana
na 1 fruit 345


so I'm sure that the final \n have a number before it..

but i don't know about the value !!

so assuming that the value have only characters

i want to replace any \n or \r found inside that value by a space !!

coool 27Jul2007 00:58

Re: Reading text problem (carriage return character)
 
I've solved the problem

thanks :)


All times are GMT +5.5. The time now is 20:54.