function DesCode($source){
global $lang;
foreach($lang as $key => $value){
$source=str_replace($key,$value,$source);
}
return $source;
}
function GetCode($filename){
$handle=fopen($filename,"r");
$source=fread($handle,filesize($filename));
fclose($handle);
return DesCode($source);
}
$lang объявлен в другом файле descriptions.php вот его частичное содержимое:
if (empty($lang) || !is_array($lang)){
$lang=array();
}
$lang=array_merge($lang,array(
...
'{THEME_PATH}' => "$sys_dom_name/theme/$sys_def_theme",
...
'{EDITOR}' => GetCode("путь к файлу editor.html"),
...
));
Как видно из него же может запустится функция в которой он уже работает, не знаю как в php, а в таких языках как паскаль и си это нормально. Так вот суть в том что по идее система должна рекурсивно отработать и заменить все дескрипторы, но этого не происходит. А происходит следующее - первый файл(в котором есть дескриптор {EDITOR}) обрабатывается как положено, файл editor.html вставляется на место дескриптора, но вот дескрипторы которые имеются в самом файле editor.html не заменяются (тот же {THEME_PATH}). Почему так происходит я не как не могу понять..
Спустя 55 минут, 30 секунд (21.04.2011 - 21:31) denizkin написал(а):
Riteret
В файле descriptions.php после описания $lang занеси его в глобальный массив! $GLOBALS['lang'] = $lang;
И после этого можешь пользовать! И Связь между этими файлами должна быть, если её нету, как ты не хоти гаданиями на пробелах PHP не увидит её!
Для того, чтоб понять что тебе приходит в $GLOBALS сделай его вывод var_dump($GLOBALS);
В файле descriptions.php после описания $lang занеси его в глобальный массив! $GLOBALS['lang'] = $lang;
И после этого можешь пользовать! И Связь между этими файлами должна быть, если её нету, как ты не хоти гаданиями на пробелах PHP не увидит её!
Для того, чтоб понять что тебе приходит в $GLOBALS сделай его вывод var_dump($GLOBALS);
Спустя 5 минут, 32 секунды (21.04.2011 - 21:37) twin написал(а):
Первую функцию лучше так переделать
function DesCode($source){
global $lang;
return str_replace(array_keys($lang), array_values($lang), $source);
}
Спустя 49 минут, 33 секунды (21.04.2011 - 22:26) Trianon написал(а):
Не вижу здесь рекурсии.