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

From: Date: Tue, 28 Aug 2001 13:35:04 +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-64512@lists.php.net to get a copy of this message
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 > 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 > -- Jo Giraerts Computerprutser Life BVBA Interleuvenlaan 15A, 3001 LEUVEN, BELGIUM icq:81939849, email:jo@life.be, 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>

« previous php.dev (#64512) next »