У меня есть файл, в котором я храню несколько шаблонов с разделителем.Я получаю содержимое с помощью file_get_contents (), а затем анализирую их с помощью preg_match_all ().В эти шаблоны я включаю переменные, которые я ожидал заменить их значениями, так как я использую метод фигурных скобок, как это можно сделать в строках (см. Пример ниже).У кого-нибудь есть советы, почему это не работает?
code.tpl:
### CHAPTER_FILE_LIST START ###
<item id="{$CHAPTER['id']}" href="{$CHAPTER['file']}.xhtml" media-type="application/xhtml+xml"/>
### CHAPTER_FILE_LIST END ###
### CHAPTER_LIST START ###
<itemref idref="{$CHAPTER['id']}"/>
### CHAPTER_LIST END ###
PHP-файл
function grab_templates() {
global $tpl;
if($raw_tpl = file_get_contents('templates/code.tpl')) {
preg_match_all('/### ([A-Za-z._]+) START ###\s*([^#]+)### \1 END ###\s*/', $raw_tpl, $tpl_array);
$count = count($tpl_array[1]);
for($i = 0; $i < $count; $i++) {
$tpl[$tpl_array[1][$i]] = $tpl_array[2][$i];
}
} else {
echo 'Error getting code.tpl';
exit;
}
}
grab_templates();
$CHAPTER['id'] = 'name_of_chapter';
$CHAPTER['file'] = 'chapter_file';
echo $tpl['CHAPTER_FILE_LIST'].'<br />';
echo $tpl['CHAPTER_LIST'];
Это должно определять переменные шаблона: $tpl['CHAPTER_FILE_LIST']
и $tpl['CHAPTER_LIST']
и вывод:
<item id="name_of_chapter" href="chapter_file.xhtml" media-type="application/xhtml+xml"/>
<itemref idref="name_of_chapter"/>
, но вместо этого выводится:
<item id="{$CHAPTER['id']}" href="{$CHAPTER['file']}.xhtml" media-type="application/xhtml+xml"/>
<itemref idref="{$CHAPTER['id']}"/>