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

  • Автор темы Автор темы dimases
  • Дата начала Дата начала

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 (сначала найти, запомнить, загрузить, а потом заменить)?
 
Возможно. Только нужен ли именно include и будет ли он работать ожидаемым образом - не знаю.
 
PHP:
echo preg_replace('#<\$\s+include\s+(.*?)\s*\$>#sei','file_get_contents("$1")',$a);
Идея, думаю, понятна. А ещё есть [m]preg_replace_callback[/m]
PS: моё замечание относилось к области видимости.
 
Автор оригинала: 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

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

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

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

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