preg_replace с функцией (а можно ли?)...

dimases

Новичок
preg_replace с функцией (а можно ли?)...

Есть:
$a="text <$ INCLUDE 1.php $> text text text text text text text text text text text <$ INCLUDE 2.php $> text text text text text text text text <$ INCLUDE 3.php $> text text text text text text";

Хочется, точнее возможно ли одной функцией (например, preg_replace) или просто лаконичным решением заменить все директивы "<$ INCLUDE имя_файла $>" на содержимое файла (include()), указанного в директиве?

Или только через 2 действия по preg (сначала найти, запомнить, загрузить, а потом заменить)?
 

SiMM

Новичок
Возможно. Только нужен ли именно include и будет ли он работать ожидаемым образом - не знаю.
 

SiMM

Новичок
PHP:
echo preg_replace('#<\$\s+include\s+(.*?)\s*\$>#sei','file_get_contents("$1")',$a);
Идея, думаю, понятна. А ещё есть [m]preg_replace_callback[/m]
PS: моё замечание относилось к области видимости.
 

dimases

Новичок
Автор оригинала: SiMM
PHP:
echo preg_replace('#<\$\s+include\s+(.*?)\s*\$>#sei','file_get_contents("$1")',$a);
Идея, думаю, понятна.
EXELENT!

А теперь думаю, как если
$a='text <? echo "1"; ?> text <? echo "2"; ?> text <? echo "3"; ?> text';

исполнить заключенные в "<?...?>" команды и подставить в замен?

Что-то это не хочет работать:
$a=preg_replace('#<\?\s+(.*?)\s*\?>#sei','eval(`$1`)',$a);

Подскажите?

----------

Уже понял, что есть "e":
$a=preg_replace('#<\?\s+(.*?)\s*\?>#sei','$1',$a);

Но все равно, Fatal error: Failed evaluating code: echo \'1\'; in z:\home\localhost\www\preg\index.php on line 7

Что есму не нравиться? Слеши? Как убрать?
 

Фанат

oncle terrible
Команда форума
dimases
а такая мысль, как заранее поменять в коде скрипта 1.пхп тот текст, который ты карячишься потом заменять прег реплейсом, не приходила тебе в голову?
 

dimases

Новичок
Автор оригинала: Фанат
dimases
а такая мысль, как заранее поменять в коде скрипта 1.пхп тот текст, который ты карячишься потом заменять прег реплейсом, не приходила тебе в голову?
Дело в том, что все тут хитро, надо добавить мод в плане инклуда файлов в одну систему, которая работает по шаблонному типу... То есть, сначала надо весь шаблон собрать, потом выполнить, что может быть необходимо, а потом уже вывести...
 

Фанат

oncle terrible
Команда форума
и что?
ты думаешь, ты один такой хитрый, кому понадобились "мод в плане инклуда файлов в одну систему, которая работает по шаблонному типу"? Нет. Ты единственный, кто делает это через анальное отверстие.
 

dimases

Новичок
Фанат

Ок, тогда не понимаю, объясни на примере?

Есть, header.php, footer.php, содержащие какой-либо PHP-код (нужный и возможно меняющийся), надо их инклудить туда, где есть только echo $template (условно, конечно, написано).

Какие есть варианты, чтобы я втыкал это правильно (тупо в местах вывода темплейта делать include не хочу, хочу, чтобы директивы были в темплейте).
 

Фанат

oncle terrible
Команда форума
предусмотреть все изменения в этих хидерах и футерах.
сделать их нормальными шаблонами и парсить как и все остальное.
 

dimases

Новичок
Автор оригинала: Фанат
предусмотреть все изменения в этих хидерах и футерах.
сделать их нормальными шаблонами и парсить как и все остальное.
Нет, это будет не удобно... точнее это сейчас уже все заложено в систему, а нужно добавить именно настоящий инклудинг в нужное место... Вот это и делаю.
 
Сверху