2013-12-14 143 views
0

我在谷歌和在此搜索stackoverflow,但我找不到任何結果。 我想要的是知道你是否可以從一個字符串執行一個PHP函數。 爲什麼? 我有一個函數可以在數組之後創建一個表。 事情是我想要的,例如格式化一個unix時間戳到一個日期,但動態。 例從PHP字符串執行PHP函數

'Register date' => array(
     "<?php date('h:m:i',{RegDate}); ?>" 
), 

這可能嗎? (我已經有一個函數將{RegDate}轉換成相應的行,所以我需要的只是以某種方式執行函數日期,如果可能的話)。

我試過eval,甚至只是一個簡單的回聲,時間HTMLS評論我的PHP代碼和它們成爲

<!--?php date('h:m:i',1362159376); ?--> 
+1

評估字符串作爲代碼通常是設計不佳的標誌。仔細查看你的代碼,看看是否有更好的方法去做你想做的事情。如果您確實需要使用eval,則只需將它傳遞給PHP代碼即可,而不包含環繞它的。 – Thayne

+0

我試過沒有php的標籤,但它只是回聲純色的字符串.. –

+0

什麼是「每次htmls評論我的PHP標籤」是什麼意思?您是否驗證過轉換標籤的內容,或者您​​是否只查看瀏覽器常用的* view source *窗口輸出? - 您可能希望詳細說明應用程序流(「數組後的表」)以及爲什麼您認爲這是必要的。顯示您的'eval'解決方法嘗試。解釋爲什麼你不能擴展你的佔位符語法來支持基本功能。 – mario

回答

2

您可以使用匿名函數吧:

'Register date' => function($regdate) { 
    return date('h:m:i', $regdate); 
}, 

然後調用它像這樣:

call_user_func($x['Register date'], $row['date']); 
+0

啊,用匿名函數找到了一個方法,謝謝。 –

0

爲什麼不直接使用

'Register date' => array(
    date('h:m:i', RegDate)) 

從我所看到的,我們沒有理由去嘗試,並在此使用的變量解析,因爲日期()返回一個字符串已經。如果你真的需要,你可以使用以下命令:

'Register date' => array(
    "{date('h:m:i', RegDate)}") 

整個表達式需要是{}'來執行字符串,這就是爲什麼在你的例子中,你都拿到了時間戳,但不是第內部其餘的表達。

+0

那麼,如果我使用的第一件事,你建議它會從陣列執行......並且我需要用時間戳替換regdate變量..所以這是行不通的。第二個例子,我有一個Preg匹配,它將{}中的內容作爲索引,並將其作爲變量$ row的索引,這是來自數據庫的行..感謝迴應壽。 –

+0

老實說,你似乎試圖對你正在解決的問題採取一種可憐的辦法,它基本上在我看來,你正試圖繞過代碼作爲參數,因爲你想要將它存儲在一個字符串中。使用匿名函數可能會更好。 –

0

我想知道如果你可以執行一個字符串的PHP函數。

當然可以,但似乎這不是你的問題。 「從字符串」執行功能:

<?php 
    call_user_func('date', 'h:m:i', RegDate); 

所以,如果「動態」意味着你要告訴函數的名稱爲好,那麼這是這樣的。

您也可以傳遞參數數組:

<?php 
    call_user_func_array('date', array('h:m:i', RegDate));