源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

将RTF格式的文件转成HTML并在网页中显示的代码

  • 时间:2020-09-16 18:00 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:将RTF格式的文件转成HTML并在网页中显示的代码
将RTF格式的文件转成HTML并在网页中显示的代码 它是这样工作的,将一个RTF文件上传,然后转成HTML显示出来,代码有点复杂,teaman还要好好研究,好象中文版有点问题。     <html>     <body>     <?     if(!($userfile)) {     ?>     <form enctype="multipart/form-data" action="<?print($PHP_SELF);?>" method=post>     <input type=hidden name="max_file_size" value=2000>     Send this file: <input name=userfile type=file>     <input type=submit value=Upload>     </form>     </body>     </html>     <?     exit;     }     function ProcessTags($tags, $line) {     $html = "";     global $color;     global $size;     global $bullets;     // Remove spaces.     $tags = trim($tags);     // Found the beginning of the bulleted l     //     ist.     if(ereg("\\\pnindent", $tags)) {     $html .= "<ul><li>";     $bullets += $line;     $tags = ereg_replace("\\\par", "", $tags);     $tags = ereg_replace("\\\(tab)", "", $tags);     }     if($line - $bullets == 0) {     $tags = ereg_replace("\\\par", "", $tags);     }     elseif($line - $bullets == 1) {     if(ereg("\\\pntext", $tags)) {     $html .= "<li>";     $tags = ereg_replace("\\\par", "", $tags);     $tags = ereg_replace("\\\(tab)", "", $tags);     $bullets++;     }     else {     $html .= "</ul>";     $bullets = 0;     }     }     // Convert Bold.     if(ereg("\\\b0", $tags)){ $html .= "</b>"; }     elseif(ereg("\\\b", $tags)) { $html .= "<b>"; }     // Convert Italic.     if(ereg("\\\i0", $tags)){ $html .= "</i>"; }     elseif(ereg("\\\i", $tags)) { $html .= "<i>"; }     // Convert Underline.     if(ereg("\\\ulnone", $tags)){ $html .= "</u>"; }     elseif(ereg("\\\ul", $tags)){ $html .= "<u>"; }     // Convert Alignments.     if(ereg("\\\pard\\\qc", $tags)) { $html .= "<div align=center>"; }     elseif(ereg("\\\pard\\\qr", $tags)) { $html .= "<div align=right>"; }     elseif(ereg("\\\pard", $tags)){ $html .= "<div align=left>"; }     // Remove \pard from the tags so it does     //     n't get confused with \par.     $tags = ereg_replace("\\\pard", "", $tags);     // Convert line breaks.     if(ereg("\\\par", $tags)){ $html .= "<br>"; }     // Use the color table to capture the fo     //     nt color changes.     if(ereg("\\\cf[0-9]", $tags)) {     global $fcolor;     $numcolors = count($fcolor);     for($i = 0; $i < $numcolors; $i++) {     $test = "\\\cf" . ($i + 1);     if(ereg($test, $tags)) {     $color = $fcolor[$i];     }     }     }     // Capture font size changes.     if(ereg("\\\fs[0-9][0-9]", $tags, $temp)) {     $size = ereg_replace("\\\fs", "", $temp[0]);     $size /= 2;     if($size <= 10) { $size = 1; }     elseif($size <= 12) { $size = 2; }     elseif($size <= 14) { $size = 3; }     elseif($size <= 16) { $size = 4; }     elseif($size <= 18) { $size = 5; }     elseif($size <= 20) { $size = 6; }     elseif($size <= 22) { $size = 7; }     else{ $size = 8; }     }     // If there was a font color or size cha     //     nge, change the font tag now.     if(ereg("(\\\cf[0-9])||(\\\fs[0-9][0-9])", $tags)) {     $html .= "</font><font size=$size color=$color>";     }     // Replace \tab with alternating spaces       //     and nonbreakingwhitespaces.     if(ereg("\\\(tab)", $tags)) { $html .= "        "; }     return $html;     }     function ProcessWord($word) {     // Replace \\ with \     $word = ereg_replace("[\\]{2,}", "\\", $word);     // Replace \{ with {     $word = ereg_replace("[\\][\{]", "\{", $word);     // Replace \} with }     $word = ereg_replace("[\\][\}]", "\}", $word);     // Replace 2 spaces with one space.     $word = ereg_replace(" ", "  ", $word);     return $word;     }     $color = "000000";     $size = 1;     $bullets = 0;     // Read the uploaded file into an array.     //           $rtfile = file($userfile);     $fileLength = count($rtfile);     // Loop through the rest of the array     for($i = 1; $i < $fileLength; $i++) {     /*     ** If the line contains "\colortbl" then we found the color table.     ** We'll have to split it up into each individual red, green, and blue     ** Convert it to hex and then put the red, green, and blue back together.     ** Then store each into an array called fcolor.     */     if(ereg("^\{\\\colortbl", $rtfile[$i])) {     // Split the line by the backslash.     $colors = explode("\\", $rtfile[$i]);     $numOfColors = count($colors);     for($k = 2; $k < $numOfColors; $k++) {     // Find out how many different colors th     //     ere are.     if(ereg("[0-9]+", $colors[$k], $matches)) {     $match[] = $matches[0];     }     }     // For each color, convert it to hex.     $numOfColors = count($match);     for($k = 0; $k < $numOfColors; $k += 3) {     $red = dechex($match[$k]);     $red = $match[$k] < 16 ? "0$red" : $red;     $green = dechex($match[$k + 1]);     $green = $match[$k +1] < 16 ? "0$green" : $green;     $blue = dechex($match[$k + 2]);     $blue = $match[$k + 2] < 16 ? "0$blue" : $blue;     $fcolor[] = "$red$green$blue";     }     $numOfColors = count($fcolor);     }     // Or else, we parse the line, pulling o     //     ff words and tags.     else {     $token = "";     $start = 0;     $lineLength = strlen($rtfile[$i]);     for($k = 0; $k < $lineLength; $k++) {     if($rtfile[$i][$start] == "\\" && $rtfile[$i][$start + 1] != "\\") {     // We are now dealing with a tag.     $token .= $rtfile[$i][$k];     if($rtfile[$i][$k] == " ") {     $newFile[$i] .= ProcessTags($token, $i);     $token = "";     $start = $k + 1;     }     elseif($rtfile[$i][$k] == "\n") {     $newFile[$i] .= ProcessTags($token, $i);     $token = "";     }     }     elseif($rtfile[$i][$start] == "{") {     // We are now dealing with a tag.     $token .= $rtfile[$i][$k];     if($rtfile[$i][$k] == "}") {     $newFile[$i] .= ProcessTags($token, $i);     $token = "";     $start = $k + 1;     }     }       else {     // We are now dealing with a word.     if($rtfile[$i][$k] == "\\" && $rtfile[$i][$k + 1] != "\\" && $rtfile[$i][$k - 1] != "\\") {     $newFile[$i] .= ProcessWord($token);     $token = $rtfile[$i][$k];     $start = $k;     }     else {     $token .= $rtfile[$i][$k];     }     }     }     }     }     $limit = sizeof($newFile);     for($i = 0; $i < $limit; $i++) {     print("$newFile[$i]\n");     }     ?>     </body>     </html>                     
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部