PHP preg_replace_callback

У меня есть этот тег в моем html-файле:

    {{block:my_test_block}} 
{{news:my_test_block2}}

Мне нужно проанализировать и заменить этот тег содержимым из базы данных, мой подход:

     ob_start();
     require_once('file.php');
     $template = ob_get_contents();
     ob_end_clean();

      $line = preg_replace_callback('/{(\w+)}/' , "parseTag" , $template);

function parseTag($matches){
   //here switch for block, news, 
}

это правильный путь? Спасибо.


person Ste    schedule 13.06.2012    source источник
comment
Определите правильный путь. Это работает? :)   -  person deceze♦    schedule 13.06.2012
comment
Мне нужно изменить регулярное выражение, чтобы увидеть, является ли это блоком или новостью!   -  person Ste    schedule 13.06.2012
comment
Мой ответ решить вашу проблему?   -  person Sena    schedule 13.06.2012
comment
@Ste, мой ответ решит твою проблему? дайте нам знать...   -  person Sena    schedule 15.06.2012


Ответы (1)


Попробуйте использовать

'/{{(.+):(.+)}}/'

Итак, в $matches[1] вы увидите блок или новость.

Ваш скрипт должен выглядеть так

$line = preg_replace_callback('/{{(.+):(.+)}}/' , "parseTag" , $template);

function parseTag($matches){
   if($matches[1] == 'block'){
        $return = 'Its Blocked';
   }elseif($matches[1] == 'news'){
        $return = 'Great news';
   }else{
        $return = 'Ops...';
   }
   return $return;
}
person Sena    schedule 13.06.2012