Reading text problem (carriage return character)

coool's Avatar
Go4Expert Member
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
0
pradeep's Avatar, Join Date: Apr 2005
Team Leader
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); 
0
coool's Avatar
Go4Expert Member
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 !!?????
0
pradeep's Avatar, Join Date: Apr 2005
Team Leader
specify the format for each record (or each line)
0
coool's Avatar
Go4Expert Member
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 !?
0
pradeep's Avatar, Join Date: Apr 2005
Team Leader
PHP Code:
$data preg_replace("/([^\d]+)\\n/""$1 "$data); 
0
coool's Avatar
Go4Expert Member
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


Last edited by coool; 25Jul2007 at 22:04..
0
coool's Avatar
Go4Expert Member
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 !!
0
coool's Avatar
Go4Expert Member
I've solved the problem

thanks