The feature i suggest for inclusion in the php core is described below,
especially in my first post.
I think that is a really good idea and i ask you to spend a moment and
read my suggestion.

If you think that this feature could be useful, reply to this message and
say that you agree
(don't repeat all the text written below, i don't want to overload the news

(my english is not very good, i'm sorry:)

Federico Marani ([EMAIL PROTECTED])

----THE FIRST----
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,

An example:
if ($lang == "it")
  define("MESSAGE","il %(animal)s %(color)s sta %(action)s %(target)s");
  define("MESSAGE","the %(color)s %(animal)s is %(action)s");

// 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

Yes, the function you have written below make the same thing but i think
that a function written in c, inside the php module, can be faster and more
elegant than this php-function.

Again, i think that the final user will be happy to have an already written
instead of think and code a personalized function.

I think it's more elegant because it follow the same approach of printf-like
and a user who already known these functions or known python will not have
in finding a solution for his problem

Also prinf, sprinf, etc... can be written as php functions and separated
from php core, but it will not happen... why? too important and too useful,
they requires speed
and their functionality
is required in many programs.

The same thing happen in python with dictionary substitution, and now,
nobody think to remove

I think that this type of function could be useful for a lot of people...

Let me know what do you (also zeev and others) think about

Federico Marani

Jo Giraerts <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]
> 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?

PHP Development Mailing List <>
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