Php 如何用Codeigniter中的视图替换preg_?

Php 如何用Codeigniter中的视图替换preg_?,php,codeigniter,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_insta

我正在尝试用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;
希望你们能从这个例子中理解我的意图。但我不知道该怎么做

谢谢

您可以试试:

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

而不是get_CI(),只需按照用户指南中的说明通过引用传递即可,如下所示:$CI=&get_instance();看起来你是对的,但由于我不知道get_instance()还能做什么,我想我最好还是安全一点;-)我只是简单地将$CI=&get_instance()放在return语句上方,它就像一个符咒。你就是那个人!谢谢