On Tue, 28 Aug 2001, Jo Giraerts wrote:
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?
Not really, the below is a different functionality (and the above is
slow because of the use of eval)... +1 for it being in the core...
-Sterling
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]
--
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]