Discuz!开发之HTML转Discuz代码(bbcode)函数html2bbcode() [复制链接]

moqu8 2018-5-1

5 0
定义文件:\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')",  
        '',  
        '
',  
        '
',  
        '
',  
        '
',  
        "tdtag('\\1')",  
        '
',  
        "\"\"",  
        "\n\n",  
        "smileycode('\\1')",  
        "imgtag('\\1')",  
        '\1',  
        "\n",  
        "\\2",  
    );  
    $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;  
//输出:这里是加粗文本  

最新回复 (0)
返回
支持中心
邮箱:winkill2012@qqcom
新站优化中!部分功能尚未完善,敬请谅解!
支持中心