This is already possible in php, though with the following simple
function..

   // function to read a file with php-vars in as a string
   // $predefined_vars: an array ("varname" => "value"). all the
   // variablenames defined in this array can be used in the bodyfile.
   // They will receive the respective values. This makes personalising
   // the mailes easier..
   function file_as_body($filename, $predefined_vars)
   {
      $ar = file($filename);
      extract($predefined_vars);

      foreach ($ar as $number => $line)
      {
         eval("\$ar2[] = \"$line\";");
      }

      return implode("",$ar2);
   }

and for instance this file as template:

<--- template file
You received a file on (" . date("d/m/Y (H:i)") . ")

filename: ".basename($file) ."
filesize: ".filesize($file) ."
mimetype: $mimetype

Hope you enjoy it..
--->

You can even use php-code already, thanks to eval :)

Maybe we better make it a PEAR-thing?




On Tue, Aug 28, 2001 at 12:25:15PM +0200,  wrote:
> I have seen that in php there isn't nothing similar to dictionary
> substitution in python.
> (a dictionary is an array with string keys, like hash in perl)
> 
> This change consist in adding two functions ("a" stay for "array"):
> aprintf(string format, array dict) -- like printf, print the result
> saprintf(string format, array dict) -- like sprintf, return the result
> 
> It works like this (written in php-like language):
> 
> format -> "my name is %(name)s and i'm %(age)s"
> dict -> array( name=>"tom", age=> "eighteen" );
> 
> (in php, unlike python, is possible to make an array with both string and
> number indices, so the format can be also %(2)s,...)
> 
> aprintf(format,dict) -- print "my name is tom and i'm eighteen"
> saprintf(format,dict) -- return "my name is tom and i'm eighteen"
> 
> in python, these substitutions are very useful, especially in cgi
> programming, for making templates from text files, in php could be
> useful in, for example, language customisation, or message formatting,
> etc...
> 
> An example:
> if ($lang == "it")
>   define("MESSAGE","il %(animal)s %(color)s sta %(action)s %(target)s");
> else
>   define("MESSAGE","the %(color)s %(animal)s is %(action)s");
> 
> aprintf(MESSAGE,array(animal=>"cobra",color=>"green",action=>"eating",target
> =>"mouse"));
> // if the %(target)s isn't found, is ignored.
> 
> 
> (the "s" terminator could be substituted with other letters, like d for
> numbers, etc...)
> 
> This approach has several advantages over something like this:
> "the $color $animal is $action"
> because in this phrase, variables are substituted when the parser execute
> it, and in this case:
> "the %(color)s %(animal)s is %(action)s"
> parameters are substituted only when the phrase is parsed with a specialized
> function like aprintf
> 
> 
> 
> I think that this is a good idea and could save a lot of time when the
> program need to be as modular as possible.
> 
> ----------------
> Federico Marani
> [EMAIL PROTECTED]
> ----------------
> 
> 
> 
> 
> -- 
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
> 

-- 
Jo Giraerts
Computerprutser
Life BVBA
Interleuvenlaan 15A, 3001 LEUVEN, BELGIUM
icq:81939849, email:[EMAIL PROTECTED], ph0ne:+32(0)16 20 89 61 
pgp-key available at: http://www.keyserver.net. 
fingerprint: 81EE B1FD 88E2 A03A 4F49 6D8A 806E 2220 9C2F 918B 

    I've got these opium queens that move around my space, 
    I said it's waste not, want not, 
    I think I'll take another, 
    I'm holding all this pain that I'm trying to smother.
                                                                <branvan3000 - 
Afrodisiac>

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to