|
Posted by Jerry Stuckle on 08/18/06 01:05
mens libertina wrote:
> Disclaimer: In addition to reading the skimpy entries at php.net, I've
> searched this group and alt.php to no avail.
>
> Basically, I'm trying to use a template to send email reminders, but I
> can't use my backreferences the way I would like. (template.inc is not
> installed on my host.) If I'm approaching the problem wrong, please
> have mercy and tell me how to solve it! :)
>
> I have an array, $info, that looks like this (this is just one user):
> Array ( [morgan] => Array
> (
> [user] => morgan
> [name] => Morgan Seppy
> [expires] => 2006-08-28
> )
> )
>
> and a sample template file:
> Hello, {NAME}!
>
> This is a courtesy reminder that your account, {USER}, is due to
> expire on {EXPIRES}.
>
> Please let us know if you need assistance or have questions.
>
> Thanks,
> Staff
>
> So, I want to replace the {TAG} with the appropriate item in $info. the
> relevant code that doesn't work is (i've deleted my debugging print
> statements):
>
> function CreateEmail( $info )
> {
> $emesg = file_get_contents( TMPLFILE );
> if(!$emesg)
> { error_log( "Template file, ".TMPLFILE.", not read.\n", 3,
> $errfile ); }
> else
> {
> $tagpatt = '/\{(\w+?)\}/';
> $emesg = preg_replace_callback( $tagpatt,
> create_function( '$matches, $info',
> '$field=strtolower($matches[1]);return
> $info[$field];' ),
> $emesg );
> }
> }
>
> result:
> Warning: Missing argument 2 for __lambda_func() in
> /home/content/c/a/j/cajtech/html/awkwords/admin/remind.php(39) :
> runtime-created function on line 1
>
> It seems that preg_replace callback() doesn't know that $info exists.
>
It wouldn't. $info is local to this function. You need to have a
variable with global scope - or at least one which is available to the
main code, not just a function.
> I've also tried just using backrefences, but I couldn't manipulate them
> (writing this from memory):
> $emesg = preg_replace( $tagpatt, eval( "$info[strtolower("."$1".")]"),
> $emesg );
>
>
> Thanks
>
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
[Back to original message]
|