Perfect Thankyou
Henry "Erik Price" <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > > 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