Thanks Dan. It's really close now. But it's duplicating the text string at the 
beginning and end of the replaces.

Here's the ouput:

     1 This is a test of the templating program. <br>
     2 Here's hoping it's working. <br>
     3 <br>
     4 <br>
     5
     6 123 123 John Smith 456 456<br>
     7
     8 123 123 Peter Lem 456 456 <br>
     9
    10 123 123 Shawn Adams 456 456 <br>



And here's the rewritten code:


      1 <?
      2 $fp     = fopen("new_data.csv", "r");
      3 $text   = fopen("text.txt", "r");
      4 $merged = fopen("merged_text.html", "w");
      5 $filecontents = fread($text,filesize("text.txt"));
      6 while ($data = fgetcsv ($fp, 1000, ",")) {
      7         $num = count ($data);
      8         $fullname = $data[0] . ' ' . $data[1];
      9         $newfullname = '123 ' .  $fullname . ' 456';
     10         $filecontents = str_replace($fullname, $newfullname, $filecontents);
     11 }
     12 fclose ($fp);
     13 fwrite($merged,$filecontents);
     14 fclose ($merged);
     15 fclose ($text);
     16 ?>

by the way, were you saying I don't need the fcloses?

Thanks!

Josh



>> Subject:
>>
>> Re: [PHP] gobbling replace
>> From:
>>
>> Analysis & Solutions <[EMAIL PROTECTED]>
>> Date:
>>
>> Thu, 9 May 2002 23:39:34 -0400
>> To:
>>
>> PHP List <[EMAIL PROTECTED]>
>>
>>
>>On Thu, May 09, 2002 at 03:17:09PM -0400, Josh & Valerie McCormack wrote:
>>
>
>>>>I'm doing a str_replace (same thing happens with ereg and preg) and when 
>>>>the pattern is found it's erasing everything after it and doing a 
>>>>strange replace, too.
>>>>
>>>>I'm using a seven column CSV (new_data.csv) where the first [0] column 
>>>>is first name and the second [1] is last name. This is what I'm trying 
>>>>to search for, and replace with with some characters on either side. So 
>>>>it will find John Smith and replace it with 123 John Smith 456.
>>>>
>>>>Here's the file I"m trying to do the replaces in (text.txt):
>>>>     1 This is a test of the templating program. <br>
>>>>     2 Here's hoping it's working. <br>
>>>>     3 <br>
>>>>     4 <br>
>>>>     5
>>>>     6 John Smith <br>
>>>>     7
>>>>     8 Peter Lem <br>
>>>>     9
>>>>    10 Shawn Adams <br>
>>>>
>>>>Here's the program:
>>>>     1 <?
>>>>     2 $row = 1;
>>>>     3 $fp     = fopen("new_data.csv", "r");
>>>>     4 while ($data = fgetcsv ($fp, 1000, ",")) {
>>>>     5         $num = count ($data);
>>>>     6         $row++;
>>>>     7         for ($c=0; $c < $num; $c++) {
>>>>     8                 $text   = fopen("text.txt", "r");
>>>>     9                 $merged = fopen("merged_text.html", "w");
>>>>    10                 $filecontents = fread($text,filesize("text.txt"));
>>>>    11                 $fullname = $data[0] . ' ' . $data[1];
>>>>    12                 $newfullname = "123 " .  $fullname . " 456";
>>>>    13                 $new_filecontents = str_replace($fullname, 
>>>>$newfullname, $filecontents);
>>>>    14                 fwrite($merged,$new_filecontents);
>>>>    15                 fclose ($merged);
>>>>    16                 fclose ($text);
>>>>    17                 copy("merged_text.html", "text.txt");
>>>>    18         }
>>>>    19 }
>>>>    20 fclose ($fp);
>>>>    21 ?>
>>>>
>>>>by the way, I know it's horribly ugly to open and close the file in the 
>>>>loop like that, but when it was outside the loop no changes were saved.
>>>>
>>
>>
>>Put ALL of the fopen()'s AND fread()'s before the while loop.
>>
>>Put ALL of the fwrite()'s AND (unnecessary) fclose()'s after the end of the while 
>>loop.
>>
>>The only thing you should be doing inside the loop is searching/replacing.  The 
>while 
>>aspect will automaticall bring up the next names to be searching for.
>>
>>That for loop shouldn't be there...
>>
>>
>
>>>>Here's the ouput (merged_text.html):
>>>>     1 This is a test of the templating program. <br>
>>>>     2 Here's hoping it's working. <br>
>>>>     3 <br>
>>>>     4 <br>
>>>>     5
>>>>     6 123 123 123 123 123 123 John Smith 456 456 456 456 4
>>>>
>>
>>
>>The odd replacement is due to the itterations for each record in the csv file caused
>>by mistakenly using that for loop.  Ditch it.
>>
>>Enjoy,
>>
>>--Dan
>>
>>
>> ------------------------------------------------------------------------
>


Reply via email to