Re: find and replace in php
| From: | Erik Price | Date: | Tue, 02 Jul 2002 18:49:31 +0000 |
| Subject: | Re: find and replace in php | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-104993@lists.php.net to get a copy of this message | ||
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 pricee@hhbrown.com