Re: python dictionary-like % (percent) substitution in php (was: Good idea in % (percent) substitutions in string)
| From: | Zeev Suraski | Date: | Tue, 28 Aug 2001 10:51:39 +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-64496@lists.php.net to get a copy of this message | ||
I think that's a pretty good idea.
At 13:25 28-08-01, --- 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