2016-01-09 33 views
0

取代我在互聯網上找到了一些腳本來設置高亮像[B]替換HTML從數據庫設置高亮

function bbcodehtml($bbtext){ 
    $bbtags = array(
    '[b]' => '<strong>','[/b]' => '</strong>', 
    '[i]' => '<em>','[/i]' => '</em>', 
    '[u]' => '<span style="text-decoration: underline;">', '[/u]' => '</span>', 
    '[code]' => '<blockquote>','[/code]' => '</blockquote>' 
); 

    $bbtext = str_ireplace(array_keys($bbtags), array_values($bbtags), $bbtext); 

    $bbextended = array(
    "/\[url](.*?)\[\/url]/i" => "<a target=\"_blank\" href=\"http://$1\" title=\"$1\">$1</a>", 
    "/\[url=(.*?)\](.*?)\[\/url\]/i" => "<a target=\"_blank\" href=\"$1\" title=\"$1\">$2</a>", 
    "/\[img\]([^[]*)\[\/img\]/i" => "<img style=\"max-width:700px;\" src=\"$1\" alt=\" \" />", 
    "/\[image\]([^[]*)\[\/image\]/i" => "<img style=\"max-width:700px;\" src=\"$1\" alt=\" \" />" 
); 

    foreach($bbextended as $match=>$replacement){ 
    $bbtext = preg_replace($match, $replacement, $bbtext); 
    } 
    return $bbtext; 
} 

但現在我從當我要顯示在textarea的內容我不能代替HTML的BBcodes有。 。 我試圖改變值preg_replace和我得到的錯誤..

+2

嗨,歡迎來到SO。請添加代碼的重要部分(可能有錯誤)。請閱讀[如何提問](http://stackoverflow.com/help/how-to-ask)和[mcve](http://stackoverflow.com/help/mcve)以獲取更好的收到問題。也請在這裏放置您的錯誤。 – davejal

回答

0

嗯......

1)你的代碼有許多安全問題。舉個例子。用戶可以編寫文本XSS攻擊是這樣的:

[img]" onmouseover="alert(document.cookie);[/img] 

2)您必須對DB兩個字段,其中第一個字段包含源(未置換BB碼)文本,第二個字段包含更換(只讀HTML)文本。對於這種情況,您只能運行替換進程(bb到html)來創建或編輯文本操作。