Печать контента в переменную, или как поменять title в теле страницы

Предположим себе такую ситуацию. При выводе <head></head> вы не можете знать какие будут прописаны title, description, keywords. Зато потом в контенте вам было бы удобно задавать title, description, keywords.

Было бы хорошо что если бы сначала все выводилось не в браузер а в переменную какую то , чтобы потом можно было заменить необходимые части на то что нам надо. В PHP есть такая возможность. Можно сказать скрипту чтобы он не отдавал все браузеру , а помещал сначала все в буфер. Для этого есть функция ob_start().

Потом в конце скрипта нужно получить все что в буфере. Это можно сделать с помощью функции ob_get_contents(). Ниже все покажу в примере.

Итак рассмотрим пример о котором я писал ранее. Значит у нас где то в коде ниже устанавливается заголовок. Для вывода заголовка используем макрос ##title##

<html>
  <head>
    <title>##title##</title>
  </head>
<body>
  Привет Мир!
<?$title="Новый заголовок страницы"?>
</body>
</html>
<?
$result_str=ob_get_contents();
ob_end_clean();  //// эта функция очищает буфер.
$result_str=str_replace("##title##", $title, $result_str); /// вот здесь мы как раз и заменяем
print $result_str; //// вывод всего в браузер
?>

Вот в принципе и все. С помощью этого метода можно кэшировать страницы. Об этом в следующих статьях.

Запись опубликована в рубрике Веб-программирование. Добавьте в закладки постоянную ссылку.

Комментарии запрещены.