Discuz!開發之HTML轉Discuz代碼(bbcode)函數html2bbcode()
阿新 • • 發佈:2017-10-18
dhtml log light submit indent round bbc trre require
定義文件:\source\function\function_editor.php
函數定義:
function html2bbcode($text) { $text = strip_tags($text, ‘<table><tr><td><b><strong><i><em><u><a><div><span><p><strike><blockquote><ol><ul><li><font><img><br><br/><h1><h2><h3><h4><h5><h6><script>‘); if(ismozilla()) { $text = preg_replace("/(?<!<br>|<br \/>|\r)(\r\n|\n|\r)/", ‘ ‘, $text); } $pregfind = array( "/<script.*>.*<\/script>/siU", ‘/on(mousewheel|mouseover|click|load|onload|submit|focus|blur)="[^"]*"/i‘, "/(\r\n|\n|\r)/", "/<table([^>]*(width|background|background-color|bgcolor)[^>]*)>/siUe", "/<table.*>/siU", "/<tr.*>/siU", "/<td>/i", "/<td(.+)>/siUe", "/<\/td>/i", "/<\/tr>/i", "/<\/table>/i", ‘/<h([0-9]+)[^>]*>/siUe‘, ‘/<\/h([0-9]+)>/siU‘, "/<img[^>]+smilieid=\"(\d+)\".*>/esiU", "/<img([^>]*src[^>]*)>/eiU", "/<a\s+?name=.+?\".\">(.+?)<\/a>/is", "/<br.*>/siU", "/<span\s+?style=\"float:\s+(left|right);\">(.+?)<\/span>/is", ); $pregreplace = array( ‘‘, ‘‘, ‘‘, "tabletag(‘\\1‘)", ‘[table]‘, ‘[tr]‘, ‘[td]‘, "tdtag(‘\\1‘)", ‘[/td]‘, ‘[/tr]‘, ‘[/table]‘, "\"[size=\".(7 - \\1).\"]\"", "[/size]\n\n", "smileycode(‘\\1‘)", "imgtag(‘\\1‘)", ‘\1‘, "\n", "[float=\\1]\\2[/float]", ); $text = preg_replace($pregfind, $pregreplace, $text); $text = recursion(‘b‘, $text, ‘simpletag‘, ‘b‘); $text = recursion(‘strong‘, $text, ‘simpletag‘, ‘b‘); $text = recursion(‘i‘, $text, ‘simpletag‘, ‘i‘); $text = recursion(‘em‘, $text, ‘simpletag‘, ‘i‘); $text = recursion(‘u‘, $text, ‘simpletag‘, ‘u‘); $text = recursion(‘a‘, $text, ‘atag‘); $text = recursion(‘font‘, $text, ‘fonttag‘); $text = recursion(‘blockquote‘, $text, ‘simpletag‘, ‘indent‘); $text = recursion(‘ol‘, $text, ‘listtag‘); $text = recursion(‘ul‘, $text, ‘listtag‘); $text = recursion(‘div‘, $text, ‘divtag‘); $text = recursion(‘span‘, $text, ‘spantag‘); $text = recursion(‘p‘, $text, ‘ptag‘); $pregfind = array("/(?<!\r|\n|^)\[(\/list|list|\*)\]/", "/<li>(.*)((?=<li>)|<\/li>)/iU", "/<p.*>/iU", "/<p><\/p>/i", "/(<a>|<\/a>|<\/li>)/is", "/<\/?(A|LI|FONT|DIV|SPAN)>/siU", "/\[url[^\]]*\]\[\/url\]/i", "/\[url=javascript:[^\]]*\](.+?)\[\/url\]/is"); $pregreplace = array("\n[\\1]", "\\1\n", "\n", ‘‘, ‘‘, ‘‘, ‘‘, "\\1"); $text = preg_replace($pregfind, $pregreplace, $text); $strfind = array(‘ ‘, ‘<‘, ‘>‘, ‘&‘); $strreplace = array(‘ ‘, ‘<‘, ‘>‘, ‘&‘); $text = str_replace($strfind, $strreplace, $text); return dhtmlspecialchars(trim($text)); }
使用舉例:
require_once libfile(‘function/editor‘); $html=‘<strong>這裏是加粗文本</strong>‘; $bbcode = html2bbcode($html); echo $bbcode; //輸出:[b]這裏是加粗文本[/b]
Discuz!開發之HTML轉Discuz代碼(bbcode)函數html2bbcode()