preg_replace с представлениями в Codeigniter, как? - PullRequest
0 голосов
/ 03 августа 2010

Я пытаюсь разобрать вид с 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 Ответ

2 голосов
/ 03 августа 2010

Вы можете попробовать:

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

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

edit боль в этих проблемах обратного вызова всегда является областью действия функции; поэтому вы должны получить $CI откуда-то, в этом случае из get_instance () (что всегда лучше, чем использование глобальной переменной)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...