在Codeigniter中的preg_replace与视图,怎么样?

时间:2010-08-02 21:17:46

标签: php codeigniter

我正在尝试使用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;

所以希望你能从这个例子中理解我想要做什么。但我不知道如何真正做到这一点?

感谢

1 个答案:

答案 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()(总是比使用全局变量更好)