Вот метод, который я использую (для похожих вещей, а не только для заголовка):
<?
ob_start (); // Buffer output
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title><!--TITLE--></title>
</head>
<body>
<?
$pageTitle = 'Title of Page'; // Call this in your pages' files to define the page title
?>
</body>
</html>
<?
$pageContents = ob_get_contents (); // Get all the page's HTML into a string
ob_end_clean (); // Wipe the buffer
// Replace <!--TITLE--> with $pageTitle variable contents, and print the HTML
echo str_replace ('<!--TITLE-->', $pageTitle, $pageContents);
?>
PHP обычно работает, выполняя любые биты кода и распечатывая весь вывод непосредственно в браузере. Если вы скажете "echo 'Some text here.';"
, эта строка будет отправлена в браузер и очищена из памяти.
Что делает буферизация вывода, так это говорит: «Печатайте все выходные данные в буфер. Держите его. Не отправляйте НИЧЕГО в браузер, пока я вам не скажу».
Итак, что он делает, это буферизирует HTML всех ваших страниц в буфер, затем в самом конце, после тега, он использует ob_get_contents () для получения содержимого буфера (который обычно является источником HTML всей вашей страницы) код, который был бы уже отправлен браузеру) и помещает его в строку.
ob_end_clean () очищает буфер и освобождает часть памяти. Нам больше не нужен исходный код, потому что мы просто сохранили его в $ pageContents.
Затем, наконец, я делаю простой поиск и замену исходного кода вашей страницы ($ pageContents) для любых экземпляров '' и заменяю их на любую переменную $ pageTitle, которая была установлена. Конечно, он заменит <title><!--TITLE--></title>
на заголовок вашей страницы. После этого я отображаю $ pageContents, как в браузере.
Он эффективно удерживает вывод, поэтому вы можете манипулировать им перед отправкой в браузер.
Надеюсь, мои комментарии достаточно понятны.
Посмотрите ob_start () в руководстве по php (http://php.net/ob_start), если вы хотите точно знать, как это работает (и вам следует):)