当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP - Html Transfer Code

PHP
工作笔记:配置MySQL为高可用集群 (1)
MySQL (C API)VC实例及代码下载 (1)(5)
MySQL (C API)VC实例及代码下载 (1)(4)
MySQL (C API)VC实例及代码下载 (1)(3)
MySQL (C API)VC实例及代码下载 (1)(2)
MySQL (C API)VC实例及代码下载 (1)
用JSP连接mysql数据库的方法 (1)(2)
用JSP连接mysql数据库的方法 (1)
MySQL数据库账户授权的相关管理解析 (1)(2)
MySQL数据库账户授权的相关管理解析 (1)
SAP MaxDB MySQL修补数据库严重漏洞
MySQL研发中心成立发布会会后访问整理 (1)(2)
MySQL研发中心成立发布会会后访问整理 (1)
MySQL中SQL-TEXT、DATE和SET数据类型
MySQL存在权限提升及安全限制绕过漏洞
MySQL 卸载的问题
windows下安装、卸载mysql服务
如何正确卸载MySQL
MySQL手册版本 5.0.20-MySQL优化(四) (1)(5)
MySQL手册版本 5.0.20-MySQL优化(四) (1)(4)

PHP - Html Transfer Code


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 303 ::
收藏到网摘: n/a


PHP - Html Transfer Code 超文本转换码,市面上这东西已经很滥(多)了,不过是这几天自己实践了一下~~~~
支持 多重嵌套 和 同标签嵌套,混合高亮显示(还有一点小问题)
自我感觉便于修改和扩充~~~~~~~~~~~
<?php
/**************************************************
* *
* Name : Functions 4 Html Transfer Code (HTC) *
* Version : 1.3.2 *
* Author : Windy_sk *
* Create : 2003-09-03 *
* Modified: 2003-12-17 *
* Email : [email protected] *
* HomePage: None (Maybe Soon) *
* Notice : U Can Use & Modify it freely, *
* BUT PLEASE HOLD THIS ITEM. *
* *
**************************************************/
$htc_list = array(
"B" => "<b>\\1</b>",
"I" => "<i>\\1</i>",
"U" => "<u>\\1</u>",
"CENTER" => "<center>\\1</center>\n",
"URL" => "<a href='\\1'>\\1</a>",
"EMAIL" => "<a href='mailto:\\1'>\\1</a>",
"IMAGE" => "<br /><table align=center width='100%'><tr><td align='center'><img src='\\1' border='0' onload='org_w=this.offsetWidth;this.style.width=10;this.style.width=(org_w>parseInt(this.offsetParent.offsetWidth))?this.offsetParent.offsetWidth:org_w' onclick='window.open(this.src)' style='cursor:pointer' /></td></tr></table><br />\n",
"DOWNLOAD" => "exec:get_dl_html('\\1')",
"LIST" => "exec:get_list_html('\\1')",
"QUOTE" => "<center><table border='0' width='90%' cellspacing='0' cellpadding='0'><tr><td> 引用:</td></tr><tr><td><table width='100%' class='quote'><tr><td>\\1</td></tr></table></td></tr></table></center>\n",
"IFRAME" => "<table align=center><tr><td><iframe src='\\1' frameborder='0' allowtransparency='true' scrolling='yes' width='400' height='300'></iframe></td></tr></table>\n",
"MOVE" => "<center><marquee width='90%' behavior='alternate' scrollamount='3'>\\1</marquee><center>\n",
"GLOW" => "<table><tr><td class='glow'>\\1</td></tr></table>\n",
"SHADOW" => "<table><tr><td class='shadow'>\\1</td></tr></table>\n",
"DROPSHADOW" => "<table><tr><td class='dropshadow'>\\1</td></tr></table>\n",
"GBMUSIC" => "<bgsound src='\\1' loop='-1'>\n",
"MUSIC" => "<TABLE cellSpacing=0 cellPadding=0 align=center border=0><TBODY><TR><TD vAlign=top colSpan=3><EMBED name=music_rm align=top src='\\1' width='200' height='30' type='audio/x-pn-realaudio-plugin' console='ClipNN' loop='false' autostart='false' controls='ControlPanel' border='1' vspace='0' hspace='0'></EMBED><br><STRONG><A href='\\1'>Download The Music</A></STRONG></TD></TR></TBODY></TABLE>\n",
"FLASH" => "<table align=center><tr><td><object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0' width='400'><param name='movie' value='\\1'><param name='quality' value='high'><embed src='\\1' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='32' height='32'></embed></object></td></tr></table>\n",
"SHOCKWAVE" => "<table align=center><tr><td><object classid='clsid:166B1BCA-3F9C-11CF-8075-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,0,0' width='400'><param name='src' value='\\1'><embed src='\\1' pluginspage='http://www.macromedia.com/shockwave/download/' width='400'></embed></object></td></tr></table>\n",
"QUICKTIME" => "<table align=center><tr><td><embed src='\\1' width='400' height='300' autoplay='true' loop='false' controller='true' playeveryframe='false' cache='false' scale='TOFIT' bgcolor='#000000' kioskmode='false' targetcache='false' pluginspage='http://www.apple.com/quicktime/'><br><STRONG><A href='\\1'>Download The Movie</A></STRONG></td></tr></table>\n",
"REALPLAYER" => "<TABLE cellSpacing=0 cellPadding=0 align=center border=0><TBODY><TR><TD vAlign=top colSpan=3><EMBED name=movie_rm align=top src='\\1' width='400' height='300' type='audio/x-pn-realaudio-plugin' console='ClipNN' loop='true' autostart='true' controls='ImageWindow,ControlPanel' border='1' vspace='0' hspace='0'></EMBED><br><STRONG><A href='\\1'>Download The Movie</A></STRONG></TD></TR></TBODY></TABLE>\n",
"MEDIAPLAYER" => "<table align=center><tr><td><object classid='clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95' width='400'><param name='ShowStatusBar' value='-1'><param name='Filename' value='\\1'><embed type='application/x-oleobject' codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701' flename='mp' src='\\1' width='400'></embed></object><br /><STRONG><A href='\\1'>Download The Movie</A></STRONG></td></tr></table>\n",
"VOTE" => "exec:get_vote_html('\\1')",
);
$htc_list_att = array(
"ALIGN" => "<div align='\\1'>\\2</div>\n",
"URL" => "<a href='\\1'>\\2</a>",
"EMAIL" => "<a href='mailto:\\1'>\\2</a>",
"IMAGE" => "<br /><table align=center width='100%'><tr><td><img alt='\\1' src='\\2' border='0' onload='org_w=this.offsetWidth;this.style.width=10;this.style.width=(org_w>parseInt(this.offsetParent.offsetWidth))?this.offsetParent.offsetWidth:org_w;' onclick='window.open(this.src)' style='cursor:pointer' /></td></tr></table><br />\n",
"FONTFACE" => "<span style='FONT-FAMILY:\\1'>\\2</span>",
"FONTSIZE" => "<span style='font-size:\\1'>\\2</span>",
"FONTCOLOR" => "<span style='color:\\1'>\\2</span>",
"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 = "<center><table border='0' width='90%' cellspacing='0' cellpadding='0'>";
if(!function_exists($type_func)) $type_func = "php_highlight";
$result .= "
<tr><td>高亮显示 <font color='red'>{$type}</font> 代码:</td></tr>
<tr><td>
<table width='100%' class='quote'><tr><td>
".$type_func($str)."
</td></tr></table>
".($type=="HTML"?"<input type='button' value='运行代码' onclick=\"str=this.parentNode.firstChild.innerText;if(str==undefined){alert('Execute Codez Failed !');return;}code_win=window.open('about:blank');doc=code_win.document;doc.open();doc.write(str);doc.close();code_win.focus();\" />":"")."
<input type='button' value='复制代码' onclick=\"try{window.clipboardData.setData('text',this.parentNode.firstChild.innerText);alert('Save Codez To The Clipboard !');}catch(e){alert('Codez Copy Failed !');}\">
<input type='button' value='保存代码' onClick=\"try{str=this.parentNode.firstChild.innerText;code_win=window.open('about:blank','_blank','top=10000');code_win.document.writeln(str);code_win.document.execCommand('saveas','','code.html');code_win.close();}catch(e){alert('Codez Save Failed !');}\">
</td></tr>
</table></center>
";
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<count($arr_css); $i++) {
$head = preg_replace("/([\\\*\.\w#: ]+\{)[^\{\}]+\}/", "<font color='{$color_1}'>\\1</font>".($nl?"<br />\n":""), $arr_css[$i]);
$unit = preg_replace("/[\\\*\.\w#: ]+\{([^\{\}]+)\}/", "\\1", $arr_css[$i]);
$unit_list = preg_split("/;\s*/", $unit);
$unit = "\n";
for($j=0; $j<count($unit_list); $j++) {
if(strlen($unit_list[$j])>0)
$unit .= " " . preg_replace("/\s*([\w\-]+)\s*:\s*(.*)/e", "'<font color=\'{$color_2}\'>\\1</font> : <font color=\'{$color_3}\'>'.htmlspecialchars('\\2').'</font> ; '", $unit_list[$j]) . ($nl?"<br />\n":"\n");
}
$arr_css[$i] = $head . $unit . "<font color='{$color_1}'>}</font>";
}
return join(($nl?"\n<br /><br />\n":"\n\n"), $arr_css);
}

function script_highlight_note($str, $mode = true) {
$color_note = "gray";
$str = str_replace("\\\"","\"",$str);
$str = preg_replace("/<font color='[a-z]+'>(.*)<\/font>/isU", "\\1", $str);
$str = $mode?"/*{$str}*/":"//{$str}";
return "<font color='{$color_note}'>{$str}</font>";
}

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<count($value); $i++) {
$str = preg_replace("/(\W)(".$value[$i].")(\W)/", "\\1<font color='{$key}'>\\2</font>\\3", $str);
}
}
$str = preg_replace("/(\.|\s)([a-z]+)\(/i" ,"\\1<font color='{$color_4}'>\\2</font>(", $str);
$str = preg_replace("/\.(\w+)(?!\()/i" ,".<font color='{$color_3}'>\\1</font>", $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<count($att_list); $i++) {
if(empty($att_list[$i])) continue;
$att_list[$i] = trim($att_list[$i]);
$att_list[$i] = preg_replace("/([^=]+)([=]?)(['\"]?)(.*)(\\3)/", "<font color='{$color_2}'>\\1</ font><font color='{$color_1}'>\\2</ font>\\3<font color='{$color_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("/<script([^>]*)>(.*)<\/script>/isU", $str, $arr_tmp);
$arr_script = $arr_tmp[0];
for($i=0; $i<count($arr_script); $i++) {
$str = str_replace($arr_script[$i], "
::script_{$i}::
", $str);
$arr_script[$i] = preg_replace("/<script([^>]*)>(.*)<\/script>/iseU", "'<font color=\'{$color_2}\'><SCRIPT '.html_highlight_attr('\\1').'></font><br />'.script_highlight(str_replace('\\\"','\"','\\2'), false).'<font color=\'{$color_2}\'></SCRIPT></font>'", $arr_script[$i]);
}
$str = preg_replace("/(<textarea[^>]*>)(.*)(<\/textarea>)/ieU" ,"'\\1'.htmlspecialchars('\\2').'\\3'", $str);
$str = preg_replace("/<!\-\-(.*)\-\->/seU" ,"'<!--'.htmlspecialchars('\\1').'-->'", $str);
$str = preg_replace("/<style([^>]*)>(.*)<\/style>/isU" ,"<!style\\1>\\2</style!>", $str);
$str = preg_replace("/<([a-z:]+)\s*(.*?)( \/|\/)?>/ise" ,"'<font color=\'{$color_2}\'><\\1 '.html_highlight_attr('\\2').'\\3></ font>'", $str);
$str = preg_replace("/<(\/[a-z:]+)>/i" ,"<font color='{$color_2}'><\\1></font>", $str);
$str = preg_replace("/<(!\-\-.*\-\-)>/sU" ,"<font color='{$color_3}'><\\1></font>", $str);
$str = preg_replace("/<!style([^>]*)>(.*)<\/style!>/iseU" ,"'<font color=\'{$color_2}\'><STYLE '.html_highlight_attr('\\1').'></font><br />'.css_highlight(str_replace('\\\"','\"','\\2'), false).'<br /><font color=\'{$color_2}\'></STYLE></font>'", $str);
for($i=0; $i<count($arr_script); $i++) {
$str = str_replace("
::script_{$i}::
", $arr_script[$i], $str);
}
$str = str_replace("</ font>", "</font>", $str);
$str = str_replace("</ b>", "</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."/upload/tech/20091012/20091012013122_621bf66ddb7c962aa0d22ac97d69b793.gif";
return file_exists($pic)?"$pic":$root_path."/upload/tech/20091012/20091012013122_1905aedab9bf2477edc068a355bba31a.gif";
}

function get_dl_html($filename, $str = "") {
return "<img src='".get_file_pic($filename)."' border='0'> <a href='$filename'>".(empty($str)?basename($filename):$str)."</a>";
}

function get_attach_html($filename, $id) {
return "<img src='".get_file_pic($filename)."' border='0'> <a href='attach_manage.php?method=download&id=$id'>$filename</a>";
}

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 .= "
<fieldset>
<legend align='left' color=black>".(empty($message)?$record[vote_title]:$message)."</legend>
<form name='poll' action='poll_manage.php?method=vote' method='post'>
<table width='90%' align='center'>";
$vote_list = split("::",$record[vote_list]);
$vote_count = split("::",$record[vote_count]);
$vote_users = count(split("\n", $record[vote_user])) - 1;
$vote_sum = array_sum($vote_count);
$str .= "
<tr><td colspan='2'> 目前共有 <font color='red'>{$vote_users}</font> 人参与了本投票 </td></tr>";
if($vote_sum==0) $vote_sum = 1;
for($i=0; $i<count($vote_list); $i++) {
$str .= "
<tr><td>".($if_vote?"► ":"<input type='hidden' value='".$vote_count[$i]."' name='vote_count[]'><input type='".($record[vote_multi]=='Y'?"checkbox":"radio")."' name='vote[]' value='{$i}'>").htmlspecialchars($vote_list[$i])."</td><td width='400'><img src='images/bars/bar".($i+1).".gif' width='".ceil($vote_count[$i]*300/$vote_sum)."' height='10'> 占总票数的 <font color='#990000'>".ceil((int)$vote_count[$i]*100/$vote_sum)."%</font></td></tr>\n";
}
$str .= "<tr><td colspan='2' align='center'><br>".($if_vote?"<b>您已经投过票了!</b>":"<input type='hidden' value='{$record[id]}' name='id'><input type='Submit' value=' 确 定 ' name='Submit'> <input type='reset' value=' 重 置 ' name='reset'>")."</td></tr>";
$str .= "
</table>
</form>
</fieldset>";
}
return $str;
}

function get_code_html($str) {
$str = str_replace("\\\"","\"",$str);
return "
<table align='center' width='550'>
<tr><td><textarea cols='80' rows='10' name=Code>".htmlspecialchars($str)."</textarea><br>
<input type='button' value='运行代码' onClick=\"str=this.parentNode.firstChild.value;code_win=window.open('about:blank');doc=code_win.document;doc.open();doc.write(str);doc.close();code_win.focus();\">
<input type='button' value='复制代码' onclick=\"try{window.clipboardData.setData('text',this.parentNode.firstChild.value);alert('Save Codez To The Clipboard !');}catch(e){alert('Please Copy The Selected Codez !');this.parentNode.firstChild.select();}\">
<input type='button' value='保存代码' onClick=\"str=this.parentNode.firstChild.value;code_win=window.open('about:blank','_blank','top=10000');code_win.document.writeln(str);code_win.document.execCommand('saveas','','code.html');code_win.close();\">
(提示:可以先修改部分代码)
</td></tr>
</table>";
}

function get_list_html($content, $type = "") {
$content = preg_replace("/(<br \/>)?[\r\n]+/", "\n", $content);
$content = preg_replace("/[\r\n]+/", "\n", $content);
$content = preg_replace("/^[\n]*(.*)[\n]*$/m", "\\1", $content);
$content = str_replace("\n", "</li><li>", $content);
$content = "<ul type='$type'><li>$content</li></ul>\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", "<a href='\\1' target='_blank'>\\1</a>", $str);
$str = preg_replace("/(\w+@(\w+\.)+[\w]{2,3})/i", "<a href='mailto:\\1'>\\1</a>", $str);
$str = preg_replace("/(href|src)='<a href=('.+')>[^<]+<\/a>'/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("/\[$key\s?=\s?([^\]]+)\]((.(?!\[$key(\s?=\s?([^\]]+))?\]))*)\[\/$key\]/iesxU", substr($value,5), $str);
} else {
$str = preg_replace("/\[$key\s?=\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<count($arr_spl[$key]); $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<count($arr_spl[$key]); $i++) {
$str = str_replace("
::{$key}_{$i}::
", $arr_spl[$key][$i], $str);
}
}
return $str;
}
?>

使用方法:
echo htc2html($str);
OK 了~~~~~~~~