2010-08-02 28 views
0

我試圖用BBCode解析視圖,並且它工作正常。但有一個功能我不知道如何實現。在Codeigniter中preg_replace與視圖,如何?

[盒=試驗]應與這 - $>負載>視圖被替換( '管理員/消息/測試', '',TRUE);

這是我到目前爲止的代碼:

$CI =& get_instance(); 
$view = preg_replace("'\[box=(.*?)\]'i", "\\1", $str); 

這裏的事情是,\ 1將是我要加載的視圖的名稱。理想情況下,我想要做這樣的事情:

$CI =& get_instance(); 
$str = preg_replace("'\[box=(.*?)\]'i", $CI->load->view('admin/news/'."\\1", '', true), $str); 
return $str; 

所以希望你從這個例子中明白我想要做什麼。但我不知道如何真正做到這一點?

感謝

回答

2

你可以嘗試:

$str = preg_replace_callback("'\[box=(.*?)\]'i",'myCallBack',$str); 

function myCallBack($match) 
{ 
    $CI =& get_instance(); 
    return $CI->load->view('admin/news/'.$match[1], '', true); 
} 

編輯中總是這些回調問題的痛苦是函數的範圍;所以你必須從某處獲得$CI,在這種情況下,從get_instance()(這總是比使用全局變量更好)

+0

而不是get_CI(),只是按照用戶指南中的引用傳遞,就像這樣:$ CI =&get_instance(); – Matthew 2010-08-02 21:57:24

+0

看起來你是對的,但由於我不知道get_instance()還有什麼,我想我最好留在安全的一面;-) – mvds 2010-08-02 22:11:22

+0

我只是把$ CI =&get_instance()放在返回之上聲明,它像一個魅力。你是男人!謝謝! – 2010-08-02 22:24:25