定义文件:\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]