Preg_match_all bbcode неправильно работает
Долго мучаюсь с bb кодами вида:
[show=home,category] Тут код простой, но внутри может быть повторение тегов, например: [show=home,category]этот текст должен выводится только в категориях[/show] и т.д.[/show]
На локалке срабатывает нормально, на сервере почему-то все исчезает, белая страница.
Сам код:
function tagShow( $matches ) {
$regex = '/\[(show|not-show)=(.*?)\]((?>(?R)|.)*?)\[\/\1\]/is';
if (is_array($matches)) {
$pageType = $matches[2];
$block = $matches[3];
if ($matches[1] == "show") $action = true; else $action = false;
$pages = explode(',', $pageType);
if($action) { // показываем
if(in_array($this->route["controller"], $pages)) $matches = $block; else $matches = '';
} else { // не показываем
if(in_array($this->route["controller"], $pages)) $matches = ''; else $matches = $block;
}
}
return preg_replace_callback($regex, array( &$this, 'tagShow'), $matches);
}