栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP


PHP - Html Transfer Code 超文本转换码,市面上这东西已经很滥(多)了,不过是这几天自己实践了一下~~~~

支持 多重嵌套 和 同标签嵌套,混合高亮显示(还有一点小问题)

自我感觉便于修改和扩充~~~~~~~~~~~



$htc_list = array(
                "B"                => "\1",
                "I"                => "\1",
                "U"                => "\1",
                "CENTER"        => "
\1
n",
                "URL"                => "\1",
                "EMAIL"                => "\1",
                "IMAGE"                => "
parseInt(this.offsetParent.offsetWidth))?this.offsetParent.offsetWidth:org_w' onclick='window.open(this.src)' style='cursor:pointer' />

n",
                "DOWNLOAD"        => "exec:get_dl_html('\1')",
                "LIST"                => "exec:get_list_html('\1')",
                "QUOTE"                => "
  引用:
\1
n",
                "Iframe"        => "
n",
                "MOVE"                => "
\1
n",
                "GLOW"                => "
\1
n",
                "SHADOW"        => "
\1
n",
                "DROpSHADOW"        => "
\1
n",
                "GBMUSIC"        => "n",
                "MUSIC"                => "

Download The Music
n",               
                "FLASH"                => "
n",
                "SHOCKWAVE"        => "
n",
                "QUICKTIME"        => "

Download The Movie
n",
                "REALPLAYER"        => "

Download The Movie
n",
                "MEDIAPLAYER"        => "

Download The Movie
n",
                "VOTE"                => "exec:get_vote_html('\1')",
                );

$htc_list_att = array(
                "ALIGN"                => "\2n",
                "URL"                => "\2",
                "EMAIL"                => "\2",
                "IMAGE"                => "
parseInt(this.offsetParent.offsetWidth))?this.offsetParent.offsetWidth:org_w;' onclick='window.open(this.src)' style='cursor:pointer' />

n",
                "FONTFACE"        => "\2",
                "FONTSIZE"        => "\2",
                "FONTCOLOR"        => "\2",
                "DOWNLOAD"        => "exec:get_dl_html('\1', '\2')",
                "LIST"                => "exec:get_list_html('\2','\1')",
                "ATTACH"        => "exec:get_attach_html('\2', '\1')",
                "VOTE"                => "exec:get_vote_html('\1','\2')",
                );

$htc_list_spl = array(
                "PHP"                => "exec:get_highlight_html('\1', 'php')",
                "CSS"                => "exec:get_highlight_html('\1', 'css')",
                "HTML"                => "exec:get_highlight_html('\1', 'html')",
                "script"        => "exec:get_highlight_html('\1', 'script')",
                "CODE"                => "exec:get_code_html('\1')",
                "EXECUTE"        => "\1",
                );


function get_highlight_html($str, $type = "php") {
        $type = strtolower($type);
        $type_func = $type."_highlight";
        $type = strtoupper($type);
        $result = "
";
        if(!function_exists($type_func)) $type_func = "php_highlight";
        $result .= "
       
       
       
高亮显示 {$type} 代码:

          

          ".$type_func($str)."
          

        ".($type=="HTML"?"":"")."
       
       
       

        ";
        return $result;
}


function php_highlight($str) {
        $str = str_replace("\"",""",$str);
        return highlight_string($str, true);
}


function css_highlight($str, $nl = true) {
        $color_1 = "red";
        $color_2 = "green";
        $color_3 = "blue";
        $str = str_replace("\"",""",$str);
        $str = str_replace("r", "", $str);
        preg_match_all("/[\*.w#: ]+{[^{}]+}/", $str, $arr_css);
        $arr_css = $arr_css[0];
        for($i=0; $i                $head = preg_replace("/([\*.w#: ]+{)[^{}]+}/", "\1".($nl?"
n":""), $arr_css[$i]);
                $unit = preg_replace("/[\*.w#: ]+{([^{}]+)}/", "\1", $arr_css[$i]);
                $unit_list = preg_split("/;s*/", $unit);
                $unit = "n";
                for($j=0; $j                        if(strlen($unit_list[$j])>0)
                                $unit .= "    " . preg_replace("/s*([w-]+)s*:s*(.*)/e", "'\1 : '.htmlspecialchars('\2').' ; '", $unit_list[$j]) . ($nl?"
n":"n");
                }
                $arr_css[$i] = $head . $unit . "}";
        }
        return join(($nl?"n

n":"nn"), $arr_css);
}


function script_highlight_note($str, $mode = true) {
        $color_note = "gray";
        $str = str_replace("\"",""",$str);
        $str = preg_replace("/(.*)/isU", "\1", $str);
        $str = $mode?"":"//{$str}";
        return "{$str}";
}


function script_highlight($str, $nl = true) {
        $color_1 = "red";
        $color_2 = "blue";
        $color_3 = "brown";
        $color_4 = "green";
        $str = str_replace("\"",""",$str);
        $str = htmlspecialchars($str);
        $str = str_replace("=","&equal;",$str);
        $str = str_replace("|","&vertical;",$str);
        $keywords = array(
                        "{$color_1}"        => array("null", "true", "false", "NaN"),
                        "{$color_2}"        => array("var", "for", "if", "else", "switch", "case", "function", "loop", "continue", "break", "<", ">", "!&equal;", "&equal;&equal;", "&equal;", "&&", "&vertical;&vertical;"),
                        "{$color_3}"        => array("window", "self", "this", "event", "document", "opener", "Navigator", "Math", "Array", "String", "Object", "Function", "Number"),
                        );
        foreach($keywords as $key => $value) {
                for($i=0; $i                        $str = preg_replace("/(W)(".$value[$i].")(W)/", "\1\2\3", $str);
                }
        }
        $str = preg_replace("/(.|s)([a-z]+)(/i" ,"\1\2(", $str);
        $str = preg_replace("/.(w+)(?!()/i" ,".\1", $str);
        $str = preg_replace("///([^n]*)n/e" ,"script_highlight_note('\1', false)", $str);
        $str = preg_replace("//es" ,"script_highlight_note('\1')", $str);       
        $str = str_replace("t", "    ", $str);
        $str = str_replace("&equal;","=",$str);
        $str = str_replace("&vertical;","|",$str);
        return $nl?nl2br($str):$str;
}


function html_highlight_attr($att) {
        $color_1 = "red";
        $color_2 = "brown";
        $color_3 = "black";
        $att = str_replace("\"",""",$att);
        $att = preg_replace("/=s*('|")([^'"]+)\1/eU","'=\1'.preg_replace('/s+/','|:s:|','\2').'\1'",$att);
        $att = str_replace("\"",""",$att);
        $att .= " ";
        preg_match_all("/[a-z:/-]+(=(['"]?).*[^\\]{1}\2?)?s+/iU", $att, $att_list);
        $att_list = $att_list[0];
        for($i=0; $i                if(empty($att_list[$i])) continue;
                $att_list[$i] = trim($att_list[$i]);
                $att_list[$i] = preg_replace("/([^=]+)([=]?)(['"]?)(.*)(\3)/", "\1\2\3\4\3", $att_list[$i]);
        }
        return str_replace("|:s:|", " ", join(" ", $att_list));
}


function html_highlight($str) {
        $color_1 = "red";
        $color_2 = "blue";
        $color_3 = "gray";
        $str = str_replace("\"",""",$str);
        preg_match_all("/]*)>(.*)/isU", $str, $arr_tmp);
        $arr_script = $arr_tmp[0];
        for($i=0; $i                $str = str_replace($arr_script[$i], "
::script_{$i}::
", $str);
                $arr_script[$i] = preg_replace("/]*)>(.*)/iseU", "'<script '.html_highlight_attr('\1').'>
'.script_highlight(str_replace('\"','"','\2'), false).'</script>'", $arr_script[$i]);
        }
        $str = preg_replace("/(]*>)(.*)()/ieU" ,"'\1'.htmlspecialchars('\2').'\3'", $str);
        $str = preg_replace("//seU" ,"''", $str);
        $str = preg_replace("/]*)>(.*)/isU" ,"\2", $str);
        $str = preg_replace("/<([a-z:]+)s*(.*?)( /|/)?>/ise" ,"'<\1 '.html_highlight_attr('\2').'\3>'", $str);
        $str = preg_replace("/<(/[a-z:]+)>/i" ,"<\1>", $str);
        $str = preg_replace("/<(!--.*--)>/sU" ,"<\1>", $str);
        $str = preg_replace("/]*)>(.*)/iseU" ,"'<STYLE '.html_highlight_attr('\1').'>
'.css_highlight(str_replace('\"','"','\2'), false).'
</STYLE>'", $str);
        for($i=0; $i                $str = str_replace("
::script_{$i}::
", $arr_script[$i], $str);
        }
        $str = str_replace("", "
", $str);
        $str = str_replace("", "", $str);
        $str = str_replace(" >", ">", $str);
        $str = str_replace("  ","  ",$str);
        $str = str_replace("t","    ",$str);
        return nl2br($str);
}


function get_file_pic($filename) {
        global $root_path;
        $ext = str_replace(".","",strrchr($filename,"."));
        $pic = $root_path."images/mime_type/{$ext}.gif";
        return file_exists($pic)?"$pic":$root_path."images/mime_type/attch.gif";
}


function get_dl_html($filename, $str = "") {
        return " ".(empty($str)?basename($filename):$str)."";
}


function get_attach_html($filename, $id) {
        return " $filename";
}


function get_vote_html($vote_idx, $message = ""){
        global $db_host, $db_user, $db_pass, $db_name;
        $db = new DB_Manager($db_host, $db_user, $db_pass);
        $db->Connect();
        $db->SelectDB($db_name);
        $db->Query("select * from mnms_poll where id=".$vote_idx);
        $record = $db->GetRS();
        $str = "";
        $db->close();
        unset($db);
        if($record) {
                $username = "dummy";
                $if_vote = !(strpos($record[vote_user], "|{$username}|")===false)
strpos($record[vote_user], "|".GetIp()."|");
                $str .= "
                       

                          ".(empty($message)?$record[vote_title]:$message)."
                          
                       
";
        }
        return $str;
}


function get_code_html($str) {
        $str = str_replace("\"",""",$str);
        return "
       
          
       


            
            
            
            (提示:可以先修改部分代码)
          
";
}


function get_list_html($content, $type = "") {
        $content = preg_replace("/(
)?[rn]+/", "n", $content);
        $content = preg_replace("/[rn]+/", "n", $content);
        $content = preg_replace("/^[n]*(.*)[n]*$/m", "\1", $content);
        $content = str_replace("n", "
  • ", $content);
            $content = "
    • $content
    n";
            return $content;
    }


    function html_trans($str) {
            $search  = array("&",                "'",                """,                "<",        ">",        "  ",                "t");
            $replace = array("&",        "'",        """,        "<",        ">",        "  ",        "    ");
            return nl2br(str_replace($search, $replace, $str));
    }


    function link_url($str) {
            $str = preg_replace("/((http|ftp|mms|rtsp|pnm|mailto)://[w@:./?=&;#-%]+)/i", "\1", $str);
            $str = preg_replace("/(w+@(w+.)+[w]{2,3})/i", "\1", $str);
            $str = preg_replace("/(href|src)='[^<]+'/iU", "\1=\2", $str);
            return $str;
    }


    function htc2html_loop($str) {
            global $htc_list, $htc_list_att;
            foreach($htc_list as $key => $value) {
                    if(substr($value,0,5)=="exec:"){
                            $str = preg_replace("/[$key]((.(?![$key(s?=s?([^]]+))?]))*)[/$key]/iexsU", substr($value,5), $str);
                    } else {
                            $str = preg_replace("/[$key]((.(?![$key(s?=s?([^]]+))?]))*?)[/$key]/ixsU", "$value", $str);
                    }
            }
            foreach($htc_list_att as $key => $value) {
                    if(substr($value,0,5)=="exec:"){
                            $str = preg_replace("/[$keys?=s?([^]]+)]((.(?![$key(s?=s?([^]]+))?]))*)[/$key]/iesxU", substr($value,5), $str);
                    } else {
                            $str = preg_replace("/[$keys?=s?([^]]+)]((.(?![$key(s?=s?([^]]+))?]))*)[/$key]/isxU", "$value", $str);
                    }
            }
            return $str;
    }


    function htc2html($str, $trans_url = true , $loop = 3) {
            global $htc_list_spl;
            $str = preg_replace("/([w+])s*/ixs","\1",$str);
            $str = preg_replace("/s*([/w+])/ixs","\1",$str);
            foreach($htc_list_spl as $key => $value) {
                    preg_match_all("/[$key](.*)[/$key]/ixsU", $str, $arr_tmp);
                    $arr_spl[$key] = $arr_tmp[0];
                    for($i=0; $i                        $str = str_replace($arr_spl[$key][$i], "
    ::{$key}_{$i}::
    ", $str);
                            if(substr($value,0,5)=="exec:"){
                                    $arr_spl[$key][$i] = preg_replace("/[$key](.*)[/$key]/iexsU", substr($value,5), $arr_spl[$key][$i]);
                            } else {
                                    $arr_spl[$key][$i] = preg_replace("/[$key](.*)[/$key]/ixsU", "$value", $arr_spl[$key][$i]);
                            }
                    }
            }
            $str = html_trans($str);
            while($loop-- > 0) {
                    if(!preg_match("/[(w+)(s?=s?([^]]+))?](.*)[/\1]/isU", $str)) break;
                    $str = htc2html_loop($str);
            }
            if($trans_url) $str = link_url($str);
            foreach($htc_list_spl as $key => $value) {
                    for($i=0; $i                        $str = str_replace("
    ::{$key}_{$i}::
    ", $arr_spl[$key][$i], $str);
                    }
            }
            return $str;
    }
    ?>使用方法:

    echo htc2html($str);

    OK 了~~~~~~~~
  • 转载请注明:文章转载自 www.mshxw.com
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号