2014-09-10 52 views
0

我正在定義以下限制的項目中工作:
我的PHP文件不能有多個開始或結束標記。
所以它是從上到下的PHP,但我可以通過'import'的方式添加靜態內容。PHP:將靜態HTML內容與已解析的PHP變量進行整合?

什麼是適當/優雅的方式來添加靜態HTML內容到我的PHP索引文件(如輸出一個網站菜單標題或一個表格),同時解決文件中的PHP變量。

就像一個公式推這使得HTTP POST(登錄或註冊),並在不匹配的情況下,顯示先前輸入的電子郵件地址,等等等等

一種方法是

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

但我不喜歡引用。 echo < < < EOF對於imho的目的也不是很好。 我認爲HTML代碼應該保持在一起,不要將它分成多個回聲,以便驗證。

所以我正在尋找一個很好的解決方案來導入/集成靜態HTML代碼,就像模板系統一樣,仍然可以解析PHP變量。

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

我想我需要一個引擎/類/函數,它用PHP代碼替換HTML模板中的變量。就像搜索$ {variable}並將其替換爲php $變量,就好像它是PHP代碼一樣。
我只是想,也許PHP已經有一些東西可以解決這個問題。

更新: 我應該反對這個要求嗎? 聽到一個在該領域有悠久歷史的專業PHP開發人員的見解會非常有趣。 (在限制是不混合HTML和PHP代碼。)

+0

所以還是HTML和PHP在單獨的文件中,我看不到有什麼問題 – 2014-09-10 19:00:55

+0

@php_nub_qq:我想我解釋了這個問題挺好的? 你真的通讀過嗎? – John 2014-09-10 19:32:49

+0

是的,我已閱讀您的問題,但我仍然不明白問題所在。幾乎每個MVC框架都這樣做? – 2014-09-10 21:43:16

回答

1

也許你可以使用模板系統? PHP有很多。一些不錯的有(在我看來):

  1. Twig,這是非常小的,快速
  2. Smarty,有點大,而且速度快,很受歡迎
+0

我認爲這是我需要的方向,我會研究它們。由於我必須審計任何庫或框架,因此我需要一些工作良好,代碼小和性能高的工具。 以前從來沒有聽說過Twig或Smarty! – John 2014-09-10 19:32:13

+0

我明白了,你有一些家庭作業要做:)我已經使用了這兩種模板引擎,並發現它們工作得很好,但對Twig有一點偏好,我認爲它具有更優雅的語法。當然,還有很多其他模板/替換引擎可供選擇,您可以通過Google找到這些引擎,但我無法對其他任何內容發表評論。祝你好運,找到適合你需求的東西! – Deniz 2014-09-10 19:50:08

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); 
?> 

這就是我想解決這樣的問題。

+0

我應該指定它更好(將更新我的問題) PHP的開始和結束標記必須在頁面的第一行和最後一行。 限制在一個文件中不能混合使用HTML和PHP代碼。 – John 2014-09-10 19:29:25