[FX.php List] Seeking improved "mail merge"

Jonathan Schwartz jschwartz at exit445.com
Fri Feb 19 07:01:26 MST 2010


Wow!  I think this is it.  Thanks!

Jonathan

>This is the kind of thing I do when dealing with user created 
>templates. It will replace all {tags} with their corresponding value 
>or remove the {tag} if there is no value for the tag supplied.
>
><?php
>
>$text = 'Dear {firstname} {lastname}.... {tag_with_no_tagValue_supplied}';
>
>$tagValues = array();
>$tagValues['firstname'] = 'John';
>$tagValues['lastname'] = 'Doe';
>
>echo mergeText($text, $tagValues);
>
>function mergeText($text, $tagValues) {
>
>     preg_match_all('/{(.*?)}/', $text, $matches);
>     
>     foreach($matches[1] as $tag) {
>         $replaceStr = '';
>         if (array_key_exists($tag, $tagValues)) {
>             $replaceStr = $tagValues[$tag];
>         }
>         $text = str_replace('{'.$tag.'}', $replaceStr, $text);
>     }
>     return $text;
>}
>?>
>--
>GARETH EVANS
>
>
>>  From: Jonathan Schwartz <<>jschwartz at exit445.com>
>>  Reply-To: "FX.php Discussion List" <<>fx.php_list at mail.iviking.org>
>>  Date: Fri, 19 Feb 2010 09:26:28 -0500
>>  To: <<>fx.php_list at mail.iviking.org>
>>  Subject: [FX.php List] Seeking improved "mail merge"
>>
>>  Hi Folks,
>>
>>  I'm looking to improve on my present technique of embedding variables
>>  within a text string, such as one might do with an email merge.
>>
>>  I want to allow the admin end users to create custom email messages
>>  in text strings, embedding pre-established tags that will resolve to
>>  actual values, such as : "Dear {firstname},  Your order {OrderNumber}
>>  has shipped."
>>
>>  Up to this time, I have hard-coded the $variables in a text string
>>  and used a series of string replace commands...which wont' work in
>>  this new environment I wan to create.
>>
>>  So, I am looking for the right php script to do this substitution,
>>  given there there is a list of a dozen or so possible variables that
>>  *could* get substituted into the text string, depending whether or
>>  not the {tag} is present in the body of the test string created by
>>  the admin user. Of course, I will have the $variables from the db
>>  set, so $namefirst will provide a value for {firstname}, etc.
>>
>>  I've been looking at at all the preg options, and have not been able
>>  to figure out which way to go.
>>
>>  In essence, I need a function that scans the email text string for
>>  known {tags} and substitutes values as they are matched. Here is my
>>  guess how it could work.  If this approach is OK, the key question is
>>  which function to use for the "if({tag} is found in the string" part.
>>
>>  CODE GUESS....
>>
>>  $textbody = "Dear {firstname} {lastname}.....";
>>  $taglist= {'{firstname}', '{lastname}', ......);
>>  $tagvalues = ('john', 'smith', ....);
>>
>>  foreach($taglist)
>>  {
>>
>>  if( {tag}  is found in  $textbody, substitute $tagvalue;
>>  }
>>
>>  Any help?
>>
>>  Thx
>>
>>  Jonathan
>>
>>  --
>>  Jonathan Schwartz
>>  Exit 445 Group
>>  <>jonathan at exit445.com
>>  <http://www.exit445.com>http://www.exit445.com
>>  415-370-5011
>>  _______________________________________________
>>  FX.php_List mailing list
>>  <>FX.php_List at mail.iviking.org
>> 
>><http://www.iviking.org/mailman/listinfo/fx.php_list>http://www.iviking.org/mailman/listinfo/fx.php_list
>
>_______________________________________________
>FX.php_List mailing list
>FX.php_List at mail.iviking.org
>http://www.iviking.org/mailman/listinfo/fx.php_list


-- 
Jonathan Schwartz
Exit 445 Group
jonathan at exit445.com
http://www.exit445.com
415-370-5011
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.iviking.org/pipermail/fx.php_list/attachments/20100219/1238d3ca/attachment.html


More information about the FX.php_List mailing list