PHP:将静态HTML内容与已解析的PHP变量集成?

时间:2014-09-10 18:53:03

标签: php templates

我在一个项目中工作,该项目定义了以下限制:
我的PHP文件不能有多个打开或关闭标记 所以它是从上到下的PHP,但我可以通过'import'添加静态内容。

将静态HTML内容添加到我的PHP索引文件(如输出网站菜单标题或公式)并同时解析文件中的PHP变量的正确/优雅方法是什么?

类似于制作HTTP POST(登录或注册)的公式,并在出现不匹配等情况时显示先前输入的电子邮件地址等。

一种方法是

echo "<form ...> \n <input ... value='$lastemail'>";

但我不喜欢引用。 echo&lt;&lt;&lt;对于这个目的,EOF也不是很好。 我认为HTML代码应该保持在一起而不将其分成多个回声,以便进行验证。

所以我正在寻找一个很好的解决方案来导入/集成静态HTML代码,比如模板系统,仍然可以解析PHP变量。

更新:
限制是不混合HTML和PHP代码。

我想我需要一个引擎/类/函数,用PHP代码替换HTML模板中的变量。就像搜索$ {variable}并将其替换为php $变量一样,就好像它是PHP代码一样 我只是想也许PHP中已经存在一些东西可以解决这个问题。

更新: 我应该反对这个要求吗? 听到在该领域有悠久历史的专业PHP开发人员的意见,将会非常有趣。 (On限制不混合HTML和PHP代码。)

2 个答案:

答案 0 :(得分:1)

也许您可以使用模板系统? PHP有很多。一些不错的(在我看来):

  1. Twig,非常小而且快
  2. Smarty,更大,但也快速且非常受欢迎

答案 1 :(得分:0)

我现在提供的解决方案可能看起来既冗长又费力,但却是解决这些限制问题的最好方法之一。创建一个包含两个表的数据库,其中一个表将存储所有静态数据,即HTML代码,而另一个表存储动态数据,即您想要个性化的数据。然后,您可以使用数据库分别弹出动态和静态数据,所有这些都只使用纯PHP。

<?php
  $host = "127.0.0.1";
  $user = "root";
  $password = "****";
  $db = "project";
  $txt = NULL;
  $conn = mysqli_connect($host, $user, $password, $db);
  if(!conn){
     header("location:error.htm");
  }
  $query1 = "SELECT dynamicdata FROM projectdynamicdata WHERE pagename ='index'";
  $resultset1 = mysqli_query($conn, $query1);
  while($row = mysqli_fetch_assoc($resultset1){
      $txt = $row["dynamicdata"];
  }
  $query2 = "SELECT htmlpage FROM projectstaticdata WHERE pagename='index'";
  $resultset2 = mysqli_query($conn, $query);
  while($row = mysqli_fetch_assoc($resultset){
      echo $row["htmlpage"];
  }
  mysqli_close($conn);
?>

这就是我要解决这个问题的方法。