On Tuesday, July 2, 2002, at 01:52 PM, Henry wrote:
> Imagine I have a piece of text > > "Dear [firstname] > > Thankyou for purchasing [product] on [date]. > > We're sure you'll be very [expectation]. > > Ta Very much." > > Whats the easiest way to replace all the things in square brackets with > variables of the same name. > > i.e. $firstname, $product, $date, $expectation > > Whilst ensuring that if the variable doesn't exist then it will be > replaced > with "" (absolutely nothing). Here, I modified the template class I use for my site (very simple) to do what you want. You need to have a template file that looks exactly like what you wrote above (EXACTLY), nothing more. Here is a usage example: <?php // the following vars have already been defined in your application, // or are set to empty strings as appropriate: // $firstname, $product, $date, $expectation // create a new Template object $template = new Template(); // specify where our template file is $template->identifyTemplate('/path/to/file/above'); // set the parameters $template->setParameter('firstname', $firstname); $template->setParameter('product', $product); $template->setParameter('date', $date); $template->setParameter('expectation', $expectation); // generate the output string and store in $outputStr $outputStr = $template->createOutput(); // free memory occupied by the Template object instance unset($template); // print our data print($outputStr); Here is the class definition: class Template { /** * @var template */ var $template; /** * @var finalOutput */ var $finalOutput; /** * @var parameters */ var $parameters = array(); /** * identifyTemplate * * determine which file to use for a template * * @access public * @param string $template path to a template file */ function identifyTemplate($template) { $this->template = $template; } /** * setParameter * * specify a name and a value to swap with that name * * this method can be called as many times as you have * parameters. * * @access public * @param string $name a parameter name * @param string $value value of the parameter */ function setParameter($variable, $value) { $this->parameters[$variable] = $value; } /** * createPage * * substitute parameter values where parameter names are found * * @access public * @return string template combined with values (transformed) */ function createOutput() { // read the template into an array, then // generate a string from that array $this->finalOutput = implode("", (file($this->template))); // loop though all the parameters, and // set the variables from the file to // their corresponding values foreach ($this->parameters as $key => $value) { $template_name = '[' . $key . ']'; $this->finalOutput = str_replace($template_name, $value, $this->finalOutput); } return $this->finalOutput; } } ---- Erik Price Web Developer Temp Media Lab, H.H. Brown [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php