Hi,

Does anyone know of a way of passing other variables to the function being called by 
preg_replace_callback?  For instance, I have the following code:

function smarty_compile_lang($tpl_source) {
// en.php contains a very large array, $_lang
        include_once '/home/test/en.php';
        global $_lang;
        return preg_replace_callback('/##(.+?)##/', '_compile_lang', $tpl_source);
}

function _compile_lang($key){
// If I include $_lang here then it gets
// loaded again and again - bad for performance as it is _very_ large
        return $_lang[$key[1]];
} // End _compile_lang

Somehow I need to make $_lang global, or pass it through the function 
preg_replace_callback as an arguement for _compile_lang() - which I don't think is 
possible?

What can I do?  I've tried a global statement everywhere I can think of... and I don't 
want to include en.php outside the functions, as it'll be included then whether the 
templates are being compiled or not.  I'm 
guessing that I may want to look at a higher level of abstraction from these 
functions, as even if I have the include in the current place, it means that every 
time a template is compiled it gets reloaded (though that's 
not as bad as every time preg_replace_callback() finds something) whereas the best way 
would be to load it once per script invocation - and then only when the templates wer 
being compiled...

Suggestions?

TIA,
Peter.



-- 
PHP General Mailing List (http://www.php.net/)
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