|
Posted by mens libertina on 08/18/06 18:18
Chung Leong wrote:
> What you need to do is fake a closure by passing an object. Example
>
> class KeywordContainer {
> var $hash;
>
> function KeywordContainer($hash) {
> $this->hash = $hash;
> }
>
> function PCRESubstitute($m) {
> $key = strtolower($m[1]);
> if(array_key_exists($key, $this->hash)) {
> return $this->hash[$key];
> } else {
> return $m[0];
> }
> }
> }
>
> $user = array('user' => "morgan",
> 'name' => "Morgan Seppy",
> 'expires' => "2006-08-28" );
> $closure = array(new KeywordContainer($user), 'PCRESubstitute');
>
> $template = "Hello, {NAME}! {USER} expires on {EXPIRES}";
> echo preg_replace_callback('/\{(\w+?)\}/', $closure, $template);
I don't know anything about closures, so I will look this up. Thanks!
[Back to original message]
|