我正在尝试使用BBCode解析视图,并且它工作正常。但有一个功能我不知道如何实现。
[box = test]应替换为$ this-> load-> view('admin / news / test','',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;
所以希望你能从这个例子中理解我想要做什么。但我不知道如何真正做到这一点?
感谢
答案 0 :(得分: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()(总是比使用全局变量更好)