2011-10-05 53 views
0

我想創建一個函數,它將解析php代碼並以純文本形式返回結果,就好像它正在瀏覽器中讀取一樣。像這樣的:PHP到文本函數

public function PHPToText($data, $php_text) { 
    //TODO code 
    return $text; 
} 

我會叫這樣的功能,與您看到下面的PARAMS:

$data = array('email' => '[email protected]'); 
$string = "<?= " . '$data' . "['email']" . "?>"; 

$text = $this->PHPToText($data, $string); 

現在echo $text應該給:[email protected]

任何想法或功能可以很好地實現這一點?

謝謝!在這種情況下

+1

我無法理解該函數應該做什麼。 – amosrivera

+0

我已經爲記憶eval()的壞處投了所有答案,但不要害怕使用它。只要照顧你正在評估的東西。當然,不要直接評估用戶輸入,但可以使用它。所有的php函數都有理由在那裏。 –

+0

php代碼永遠不會被瀏覽器讀取,服務器會做所有事情。 – Zirak

回答

4

這是一個很壞很壞很壞很壞的壞主意,但基本上是:

function PHPToText($data, $string) { 
    ob_start(); 
    eval($string); 
    return ob_get_clean(); 
} 

你真的應該重新考慮這種設計。執行動態生成的代碼基本上不是一個好主意。

+0

謝謝,我考慮過另一種設計。 – luqita

4

它應該的eval()來完成

但永遠記住:EVAL是邪惡的!