2011-08-08 47 views
2

我目前正在處理一個集成了評論系統的系統,系統在Codeigniter上運行,所以我正在尋找創建一個降價庫,但功能非常少。創建簡單markdown類

特點即時尋找到有是

  • Autolinking
  • 大膽*bold*
  • 斜體_italic_

而這幾乎是,POST數據將通過笨的XSS類之前運行它降至降級

所以我的問題是什麼是最好的方式來做到這一點,我應該使用一個庫,並禁用某些功能,我應該從頭開始,如果是這樣,,我應該如何建立這個類,我應該做什麼事情考慮到。

回答

4

我最近在類似的情況下,我想支持某種標記(BB,Markdown等)。事實證明,BBCode已經有100年沒有完成任何工作,並且爲它編寫正則表達式解析器並不容易(至少對於格式良好的標記),所以我寫了一個非常簡單的骨骼函數來做到這一點。

我的版本還包括圖像,代碼和顏色支持以及嵌套標籤([b][i]bold and italic[/i][/b])。

function parseBBCode($string){ 
    $search = array(
     '/\[b\](.*?)\[\/b\]/', 
     '/\[i\](.*?)\[\/i\]/', 
     '/\[u\](.*?)\[\/u\]/', 
     '/\[img\](.*?)\[\/img\]/', 
     '/\[url\=(.*?)\](.*?)\[\/url\]/', 
     '/\[code\](.*?)\[\/code\]/', 
     '/\[color\=(.*?)\](.*?)\[\/color\]/' 
    ); 
    $replace = array(
     '<strong>\\1</strong>', 
     '<em>\\1</em>', 
     '<u>\\1</u>', 
     '<img src="\\1">', 
     '<a href="\\1" target="_blank">\\2</a>', 
     '<code>\\1</code>', 
     '<span style="color:\\1;">\\2</span>' 
    ); 
    $new = preg_replace($search, $replace, $string); 
    return nl2br($new); 
} 
2

對我來說,整合的降價最簡單的方式是通過簡單地

  • 將markdown.php從Michel Fortrin到我的應用/幫助/文件夾,
  • 將其重命名爲markdown_helper.php
  • 使用$ this-> load-> helper('markdown')加載它。

...以防萬一有人 - 像我一樣 - 在這個舊線絆倒再次:)