2013-02-18 73 views
0

我使用BBCode助手。 辅助代码:codeigniter解析和替换bbcode

function parse_bbcode($str = ''){ 

$find = array(
    "'\[v\](.*?)\[/v\]'is" 
); 

$replace = array(
    '<video>\1</video>' 
); 

return preg_replace($find, $replace, $str); 

} 

控制器:

$this->load->helper('bbcode'); 

$data['news'] = $this->news_model->get_news($config['per_page'], $this->uri->segment(3, 1)); 

foreach ($data['news'] as $key=>$val) 
{ 
    parse_bbcode($data['news'][$key]['description']); 
} 

例如,我想替换[V] VID [/ V]到VID。 替换不起作用(没有任何反应)。我做错了什么?

+0

不工作怎么样?你期望发生什么? – Almo 2013-02-18 17:06:03

+0

对不起,我忘了说我想要什么。我更新了第一篇文章。 – Vitaliy 2013-02-18 17:15:08

回答

0

你的正则表达式是错误的。

这工作:

$video = "[v]testvid.swf[/v]"; 

$re = '/\[v](.+)\[\/v\]/i'; 

$replace = '<video>\1</video>'; 

echo htmlspecialchars(preg_replace($re, $replace, $video)); 

输出:

<video>testvid.swf</video> 

http://regexpal.com/是工作了正则表达式的问题一个很好的资源。

+0

不起作用。也许是foreach的东西? – Vitaliy 2013-02-18 19:03:19

+1

如果不查看'$ data ['news']'的内容就无法判断。下面是一个数组的工作示例:http://codepad.viper-7.com/bMrZmi – stormdrain 2013-02-18 19:14:28

+0

$ data ['news]它是帖子数组。每篇文章都包含标识,标题,说明。 – Vitaliy 2013-02-18 20:36:21