Tutorial :string replace in a file with php



Question:

I am writing an email module for my web app that sends a html email to a user on completion of a task such as signing up. Now as the formatting of this email may change I've decided to have a template html page that is the email, with custom tags in it that need to be replaced such as %fullname%.

My function has an array in the format of array(%fullname% => 'Joe Bloggs'); with the key as the tag identifier and the value of what needs to replace it.

I've tried the following:

        $fp = @fopen('email.html', 'r');        if($fp)      {        while(!feof($fp)){          $line = fgets($fp);                           foreach($data as $value){              echo $value;            $repstr = str_replace(key($data), $value, $line);                     }            $content .= $repstr;          }        fclose($fp);      }  

Is this the best way to do this? as only 1 tag get replaced at the moment... am I on the right path or miles off??

thanks...


Solution:1

I think the problem is in your foreach. This should fix it:

foreach($data as $key => $value){      $repstr = str_replace($key, $value, $line);                 }  

Alternatively, I think this should be more effective:

$file = @file_get_contents("email.html");  if($file) {      $file = str_replace(array_keys($data), array_values($data), $file);      print $file;  }  


Solution:2

//read the entire string  $str=implode("\n",file('somefile.txt'));    $fp=fopen('somefile.txt','w');  //replace something in the file string - this is a VERY simple example  $str=str_replace('Yankees','Cardinals',$str);    //now, TOTALLY rewrite the file  fwrite($fp,$str,strlen($str));  


Solution:3

That looks like it should work, but I'd use "file_get_contents()" and do it in one big blast.


Solution:4

A slightly different approach is to use PHP's heredocs combined with string interpolation i.e.:

$email = <<<EOD  <HTML><BODY>  Hi $fullname,    You have just signed up.  </BODY></HTML>  EOD;  

This avoids a separate file, and should make things beyond simple substitution easier later.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »