2016-11-14 69 views
1

我用HTML和PHP編寫了整個網站,但遇到了一個小問題。幾乎完成網站後,我被告知將所有內容放入數據庫而不僅僅是HTML。正如我所做的那樣,我注意到從數據庫中取出內聯PHP變量的文本時並未讀取。PHP - 以字符串形式存儲打印變量

原始代碼:

<div>Hello <?php echo $World; ?></div> 

新代碼:

<div><?php getContent("title"); ?></div> 

我試圖將它們存儲在數據庫中的方法有兩種:
第一種方法,文本保存:Hello <?php echo $World; ?>
打印出Hello並忽略該變量。

方法二,文本保存:Hello $World
打印出Hello $World,而不是我試過的$World

其他東西值:
Hello $$World - Hello $$World
Hello {$World} - Hello {$World}

+1

所以你認爲從數據庫中獲取每個文本應變量存在進行檢查?真? –

+2

您可以查看Smarty之類的模板包,或使用佔位符並使用str_replace替換它們。嚴重的「eval」可能也會對你有所幫助,但我無法證實。 – aynber

+6

omg,不要使用'eval'! – cmorrissey

回答

1

您可以在文本中使用佔位符,然後使用str_replace將佔位符替換爲變量。

DB串:

<div>Hello WORLD_VAR</div> 

並在代碼:

$text = str_replace('WORLD_VAR', $World, $text); 
1

閱讀sprintf

echo sprintf("Hello %s",$World);

並將那個"Hello %s"存儲在數據庫中並使用$World 像以前一樣。

如果您以正確的方式實施它,您可以使您的網站以不同語言顯示。

但我應該更多地進入模板在PHP和/或使用模板引擎的PHP。

http://php.net/manual/de/function.sprintf.php

https://de.wikipedia.org/wiki/Template-Engine#Template-Engines_f.C3.BCr_PHP

,紙幣後的評論:

的很多! php的方法做到這一點 Hello <?php echo $World; ?> 但最終你只能在數據庫中存儲真實的數據。 沒有PHP代碼或HTML只是普通的數據。其中一個可以是模板,如Hello %s其他動態數據,如用戶名或其他。而模板引擎可以幫助你以適當的方式完成這一切。 (一個模板主要是基於文件的) 請牢記這一點。

+1

但是其他變量呢?他希望將所有的PHP內容存儲到數據庫中。 – Barmar

+0

Sry,我兩次擊中'post'並沒有真正完成。 :) – JOUM

+0

這很好,但問題是,當別人編輯內容時,沒有編程經驗的人,他們將無法添加自己的變量或通過數據庫修改現有的變量,他們需要訪問html文件並有破壞網站的風險。 – Cody

相關問題