вы здесь сильно отвлеклись от темы, пошли в какието дебри теории, когда жизнь куда проще ))
рассматриваем приведенные выше примеры и смотрим на их плюсы и минусы.
1.
PHP код:
<? include ('main.php');
ob_start("replace"); ?>
<html>
<head>
<title>{TITLE}</title>
</head>
<body bgcolor={BGCOLOR}>
{CONTENT}
</body>
</html>
<? ob_end_flush(); ?>
содержание main.php
PHP код:
<? function replace($buffer)
{
$buffer = str_replace("{TITLE}", "IMHO.ws", $buffer);
$buffer = str_replace("{BGCOLOR}", "#ffffff", $buffer);
$buffer = str_replace("{CONTENT}", "Greetings to all ::VIP::", $buffer);
return ($buffer);
} ?>
2.
PHP код:
<?include ('main.php')?>
<html>
<head>
<title><?=TITLE?></title>
</head>
<body bgcolor=<?=BGCOLOR?>>
<?=CONTENT?>
</body>
</html>
содержание main.php
PHP код:
<?
$TITLE="IMHO.ws";
$BGCOLOR="#ffffff";
$CONTENT="Greetings to all ::VIP::";
?>
прошу прощения, если гдето ошибся

но теперь перейдем к плюсам и минусам:
вся цель "раздельного питания" это обезопасить код, т.е. сделать ядро (которое вообще лучше закодировать ZE) и позволить пользователям делать максимум на остальном уровне, при этом чтоб уменьшить вероятность взлома. Хорошим примером этого является xNuke (
http://xnuke.info ).
берем возможность того, что стерли main.php. в первом варианте, в итоге мы увидим просто текст с {TITLE} и {CONTENT}, во втором же мы не увидим ничего или вообще получим ошибку. какой вариан лучше, решайте сами.
во втором варианте минусом можно посчитать излишнее создание переменных, в первом же варианте просто создается новый Markup Language.
думаю в этом направлении и стоит сранивать 2 эти примера.
p.s. в принципе, оба варианта создают разделение, просто разными методами. их оба можно сравнить с вариантом
Код HTML:
<html>
<head>
<title>IMHO.ws</title>
</head>
<body bgcolor=#ffffff>
Greetings to all ::VIP::
</body>
</html>