2013-02-18 81 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