PHP - Html Transfer Code
Hypertext conversion code, there is already a lot of it on the market, but I have been practicing it myself in the past few days~~~~ Supports multiple nesting and same-label nesting, mixed highlighting (There is still a little problem) I feel that it is easy to modify and expand~~~~~~~~~~~ /************************************************** * * * Name : Functions 4 Html Transfer Code (HTC) * * Version : 1.3.2 * * Author : Windy_sk * * Create : 2003-09-03 * * Modified: 2003-12-17 * * Email : windy_sk@126.com * * HomePage: None (Maybe Soon) * * Notice : U Can Use & Modify it freely, * * BUT PLEASE HOLD THIS ITEM. * * * ************************************************** / $htc_list = array( "B" "B" => "\1 ", "I" "I" => "\1< ;/i>", "U" "U" => "\1 ", "CENTER" => "
\ 1 n" "URL" "URL" lt;a href='mailto:\1 '>\1",
"IMAGE" "IMAGE" => "
n",
"DOWNLOAD" => "exec:get_dl_html('\1')",
"LIST" => "exec:get_list_html(' \1')" ,
"quote" = & gt; "" & lt; center & gt; & lt; table border = '0' width = '90%' cellspacing = '0' cellpadding = '0' & gt; tr & gt; & lt; td & gt; quote : n", "IFRAME" => "n", "MOVE" => "\1 n", "GLOW" => "n", "SHADOW" => "n", "DROPSHADOW" => "n", "GBMUSIC" => "n", "MUSIC" => "n", "FLASH" => "n", "SHOCKWAVE" => "n", "QUICKTIME" => "n", "REALPLAYER" => "\n", "MEDIAPLAYER" => "\n", "VOTE" => "exec:get_vote_html('\\1')", ); $htc_list_att = array( "ALIGN" => "\\2
n", "URL" => "\2 ", "EMAIL" => "\2 ", "IMAGE" => " 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 = " "; 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}*/":"//{$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 font>\2 font>\3\4 font>\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_highlight(str_replace('\"','"','\2'), false).' '", $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> font>'", $str); $str = preg_replace("/<(/[a-z:]+)>/i" ,"<\1> ", $str); $str = preg_replace("/<(!--.*--)>/sU" ,"<\1> ", $str); $str = preg_replace("/]*)>(.*)/iseU" ,"' '.css_highlight(str_replace('\"','"','\2'), false).' '", $str); for($i=0; $i $str = str_replace(" ::script_{$i}:: ", $arr_script[$i], $str); } $str = str_replace(" font>", " ", $str); $str = str_replace(" b>", "", $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 = "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 了~~~~~~~~
http://www.bkjia.com/PHPjc/314366.html www.bkjia.com true http://www.bkjia.com/PHPjc/314366.html TechArticle PHP - Html Transfer Code超文本转换码,市面上这东西已经很滥(多)了,不过是这几天自己实践了一下~~~~ 支持 多重嵌套 和 同标签嵌套,混合...
Statement: The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn