2011-08-24 47 views
0

我正面臨一個奇怪的問題。 我的PHP頁面有以下代碼。你能告訴我爲什麼HTML DIV在PHP函數執行回聲之前關閉了嗎?

echo "<div id='page_$i' class='layout_pages'>".eval('?>' . $layouts[$i]. '<?php ')."</div>"; 

這裏$ i是我的迭代器,$ layouts是一個數組,其中包含從數據庫中獲取的多個佈局。有些佈局在其中包含PHP代碼。這就是爲什麼我使用eval函數。

現在的問題是,這種代碼的HTML輸出是類似的東西

<div id='page_$i' class='layout_pages'></div> 
//Layout output goes here 

理想的佈局時,應當被包裹在這個DIV。但Div在佈局之前開始和關閉。你能建議我一些好的解決方案嗎?

[解決]

好隊友,我通過在代碼以下更改解決了這個問題。而是在一個echo語句中顯示所有數據。我使用了多個回顯命令,現在一切正常。非常感謝您的建議。

<div id='page_<?php echo $i; ?>' class='layout_pages' ><?php echo eval('?>' . $layouts[$i]. '<?php '); ?></div>; 

正如我敦100分。所以不能回答我自己的問題。這就是爲什麼我編輯我的問題:)

+2

這是利用我所見過的eval最奇怪的嘗試之一。你想用它達到什麼目的?它看起來像你正在試圖獲取一個字符串,並從它建立一個PHP腳本,而不需要修改就輸出它,然後再評估它,以便再次獲得原始字符串。 – Quentin

+0

其實我在$ layouts數組中有一些PHP代碼。這就是爲什麼我需要使用這個功能。井端輸出是簡單的HTML代碼。 –

+0

如果您將PHP代碼放在一個數組中並對其進行評估,那麼您做錯了。 – Skilldrick

回答

0

流氓eval函數在有可能是罪魁禍首,我會建議做這樣的代替:

echo "<div id='page_".$i."' class='layout_pages'>".$layouts[$i]."</div>"; 
+0

ummm,但eval是平滑功能流所必需的。否則,我將不得不在多個文件中進行很多更改。 –

+1

我剛剛在原帖中看到過您的評論,我並不經常使用eval(),但是從我的理解中可以得出如下結論: echo「

".eval($layouts[$i])."
」; – ollie

+0

回聲是真正的罪魁禍首。我編輯了我的問題。問題已解決。謝謝你的建議。 –

0

你可以轉儲$佈局內容?可能有在$佈局的開頭空元素...

+0

我試過了,它有數據。不是空字符串。 –

0

試試這個:

echo "<div id='page_$i' class='layout_pages'>".eval('return ('. $layouts[$i].');')."</div>"; 

否則EVAL返回NULL

+0

語法錯誤。 :( –

0

試試這個:

echo "<div id='page_$i' class='layout_pages'>",eval('?>' . $layouts[$i]. '<?php '),"</div>"; 
相關問題