replace line in a text file php

I'm using fgetcsv to import data into mysql but the csv is corrupt and I had to find a way to fix it.

The attached code is what I'm using to fix the data but when I correct the line,    $new_line.  I need to replace the old line in the text file.  alternatively I could create a new file and write out each line as it is processed.  either way would work for me.

How do I write out the new text file?
<?
$handle = fopen("Details.txt", "r");
if ($handle) {
    while (!feof($handle)) {
      
	    $haystack = fgets($handle, 4096);
				$needle=",";
				$i = 0;
				
				//Find the position of needle
					$position = 0;
					while ($i <= 13){
					$position=strpos($haystack,$needle, $position+1);
					//echo $position . "<br>";
					$i = $i + 1;
					}
				// trim out the string before the first occurance of the needle.
				$temp_string=substr($haystack,0,$position+1);
				echo "start = " . $temp_string . '<br>';
				//find 14th comma
			  $endposition=strpos($haystack,$needle, $position+1);
			  //echo $endposition;
			  //get description1
		      $description1=substr($haystack,$position+2,$endposition - ($position + 3));
              $description1 = str_replace('"', '""', $description1);
              echo "description1=" . $description1 . "<br>";
	  
	
	   $des2end=strpos($haystack,$needle,$endposition + 1);
	   //echo $des2end;
	   $description2=substr($haystack,$endposition + 2,$des2end - ($endposition+3));
	   $description2 = str_replace('"', '""', $description2);
	   echo "description2=" . $description2 . "<br>";
	   
	   $rest =substr($haystack,$des2end);
	   echo "end = " . $rest . '<br><br>';
///this is the corrected line
	   $new_line = $temp_string . '"' . $description1 . '","' . $description2 . '"' . $rest;
	   echo $new_line . "<br><br><br>"; 
    }
    fclose($handle);
}
?>

Open in new window

jimfrithAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
aldanchConnect With a Mentor Commented:
Could you just concact the $new_line string and at the end write it out?

Once that is done you can do this:

file_put_contents("/path/to/file", $new_line);
$new_line .= $temp_string . '"' . $description1 . '","' . $description2 . '"' . $rest ."\n";
 
-instead of-
 
$new_line = $temp_string . '"' . $description1 . '","' . $description2 . '"' . $rest;

Open in new window

0
 
ddrudikCommented:
>I'm using fgetcsv to import data into mysql but the csv is corrupt and I had to find a way to fix it.
What's corrupt in the line exactly?  maybe you post a sample of a non-corrupt line and a corrupt line for example.
0
 
jimfrithAuthor Commented:
Thanks that did the trick.
0
All Courses

From novice to tech pro — start learning today.