Я пытаюсь отобразить тег PHP, выполнив следующее:
echo "<?php echo \"test\"; ?>";
Результат должен быть просто "тест" без кавычек, но мой код не работает. Происходит то, что на странице ничего не отображается, но исходный код "<?php echo "teste"; ?>"
Большинство из вас захочет узнать, почему я хочу это сделать. Я пытаюсь сделать свою собственную систему шаблонов; самый простой способ - просто использовать file_get_contents
и заменить то, что я хочу, на str_replace
, а затем использовать echo
.
Проблема в том, что в файле шаблона у меня должны быть некоторые функции PHP, которые не работают, когда я отображаю страницу, есть ли другой простой способ сделать это? Или если вы просто ответите на мой вопрос, это очень поможет!
Вот пример того, чего я пытаюсь достичь:
template.tpl:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>[__TITULO__]</title>
</head>
<body >
<p>Nome: [__NOME__] <br />
Email: <a href="mailto:[__EMAIL__]">[__EMAIL__]</a><br />
<?php
if ($cidade != "") {?>
Cidade: [__CIDADE__]<br />
<?php
}
?>
Telefone: ([__DDD__]) [__TELEFONE__] <br />
Fax:
([__DDDFAX__]) [__FAX__] <br />
Interesse: [__INTERESSE__]<br />
Mensagem:
[__MENSAGEM__] </p>
</body>
</html>
index.php
<?php
$cidade = "Teste";
$file = file_get_contents('template.php');
$file = str_replace("[__TITULO__]","Esse Título é téste!", $file);
$file = str_replace("[__NOME__]","Cárlos", $file);
$file = str_replace("[__EMAIL__]","moura.kadu@gmail.com", $file);
if ($cidade != "") {
$file = str_replace("[__CIDADE__]",$cidade, $file);
}
echo $file;
?>
Я могу решить все это, просто не показывая div, у которого нет содержимого. например, если у меня есть шаблон, и в нем у меня есть 2 деления:
<div id="content1">[__content1__]</div>
<div id="content2">[__content2__]</div>
если во время установки содержимого для замены шаблона я установил content1, а не set2, div content2 не будет отображаться ...