2012-12-24 81 views
0

我的CMS中有我的代碼塊。一些塊包含PHP代碼和一些HTML代碼。如果我使用eval顯示代碼,而該代碼是HTML代碼,我得到這個錯誤:如何知道代碼是否需要eval()

Parse error: syntax error, unexpected '<' in /Applications/XAMPP/xamppfiles/htdocs/mob/main_content.php(17) : eval()'d code on line 1

我需要的代碼前加printecho

我可以構建現在如果代碼需要eval()echo()

+0

您應該避免使用eval。只需使用require。 –

+0

@RomanNewaza這些塊是動態的管理員有權限添加塊和刪除等... – Othman

+0

糟糕的設計。不要這樣做。 –

回答

2

爲了回答您的實際問題的功能,你應該使用require(),而不是試圖如果您eval()echo()弄清楚。但是,您絕對不應該使用eval()。幾乎爲零的情況下,eval()是做某事的唯一途徑。你應該使用一個模板引擎,允許你插入PHP代碼塊並使用它。

我個人更喜歡PHPTAL,但也有很多其他像SmartyTwig,和其他許多人(那些都是前幾名我用快速谷歌搜索發現)。

+0

謝謝,但這些塊是動態的,管理員將編輯這些代碼。如果我使用smarty,我將無法從數據庫獲取數據。對 ?我將舉一個例子,我在CMS中有新聞塊,代碼是從數據庫獲取數據並將它們顯示在表格中。我怎麼可以在'Smarty'或'PHPTAL'中做到這一點 – Othman

+0

沒有理由不能將字符串作爲塊的源代碼來使用'$ phptal-> setSource($ template_code)'或者'Smarty'使用'$ smarty-> display('string:'。$ template_code)''。 –

2

有沒有自動的方式知道需要eval()。僅僅因爲它看起來像PHP代碼並不意味着它被評估。

如果你需要往前走這種方法,我建議兩種可能性:

  1. 使用數據庫,用於存儲文字文本和動態PHP不同的列;當數據來自PHP列時,您將使用eval()

  2. 要求管理員在其輸入中標記動態PHP,例如, [php]...[/php]。刪除標記,然後致電eval()

相關問題