将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 .= “ulli”; $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(“0”, $tags)){ $html .= “/b”; } elseif(ereg(“”,
$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(“pardqc”,
$tags)) { $html .= “div align=center”; } elseif(ereg(“pardqr”, $tags)) {
$html .= “div align=right”; } elseif(ereg(“pard”, $tags)){ $html .= “div
align=left”; } // Remove pard from the tags so it does //nt 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 .= “/fontfont
size=$size color=$color”; } // Replace ab 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.
** Well 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] == “”) {
    $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]”); } ? /body /html