Re: python dictionary-like % (percent) substitution in php (was: Good idea in % (percent) substitutions in string)

From: Date: Tue, 28 Aug 2001 18:05:49 +0000
Subject: Re: python dictionary-like % (percent) substitution in php (was: Good idea in % (percent) substitutions in string)
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-64537@lists.php.net to get a copy of this message
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 > > flagzenNO-SPAM@libero.it > > ---------------- > > > > > > > > > > -- > > PHP Development Mailing List <http://www.php.net/> > > To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net > > For additional commands, e-mail: php-dev-help@lists.php.net > > To contact the list administrators, e-mail: php-list-admin@lists.php.net > > > >

« previous php.dev (#64537) next »