ホームページ  >  記事  >  バックエンド開発  >  RTF形式ファイルをHTMLに変換してWebページに表示するコード_PHPチュートリアル

RTF形式ファイルをHTMLに変換してWebページに表示するコード_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:03:081156ブラウズ

RTF形式のファイルをHTMLに変換してWebページに表示するコード
RTFファイルをアップロードして、それをHTMLに変換して表示するという感じのコードです。中国語版は少し複雑な質問です。




if(!($userfile)) {
?>



次のファイルを送信します:
<入力タイプ=送信値=アップロード>




終了します。
}
function ProcessTags($tags, $line) {
$html = "";
グローバル $color;
グローバル $サイズ;
グローバル $bullets;
// スペースを削除します。
$tags = トリム($tags);
// 箇条書き l
// ist の先頭を見つけました。
if(ereg("\pnindent", $tags)) {
$html .= "
  • ";
    $bullets += $line;
    $tags = ereg_replace("\par", "", $tags);
    $tags = ereg_replace("\(タブ)", "", $tags);
    }
    if($line - $bullets == 0) {
    $tags = ereg_replace("\par", "", $tags);
    }
    elseif($line - $bullets == 1) {
    if(ereg("\pntext", $tags)) {
    $html .= "
  • ";
    $tags = ereg_replace("\par", "", $tags);
    $tags = ereg_replace("\(タブ)", "", $tags);
    $bullets++;
    }
    else {
    $html .= "
";
$bullets = 0;
}
}
// 太字に変換します。
if(ereg("\b0", $tags)){ $html .= ""; }
elseif(ereg("\b", $tags)) { $html .= ""; }
// イタリック体を変換します。
if(ereg("\i0", $tags)){ $html .= ""; }
elseif(ereg("\i", $tags)) { $html .= ""; }
// 下線を変換します。
if(ereg("\ulnone", $tags)){ $html .= ""; }
elseif(ereg("\ul", $tags)){ $html .= ""; }
// アライメントを変換します。
if(ereg("\pard\qc", $tags)) { $html .= "
"; }
elseif(ereg("\pard\qr", $tags)) { $html .= "
"; }
elseif(ereg("\pard", $tags)){ $html .= "
"; }
// pard をタグから削除して、
// par と混同しないようにします。
$tags = ereg_replace("\pard", "", $tags);
// 改行を変換します。
if(ereg("\par", $tags)){ $html .= "
"; }
// カラーテーブルを使用して、
// nt の色の変化をキャプチャします。
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];
}
}
}
// フォント サイズの変更をキャプチャします。
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; }
}
// フォントの色やサイズがあった場合
// nge フォントタグをここで変更します。
if(ereg("(\cf[0-9])||(\fs[0-9][0-9])", $tags)) {
$html .= "< ;font size=$size color=$color>";
}
// タブを交互のスペース
// および改行しない空白に置き換えます。
if(ereg("\(tab)", $tags)) { $html .= " ";
$html を返します。
}
function ProcessWord($word) {
// \ を
$word に置き換えます = ereg_replace("[\]{2,}", "\", $word);
// { を { に置き換えます
$word = ereg_replace("[\][{]", "{", $word);
// } を } に置き換えます
$word = ereg_replace("[\][}]", "}", $word);
// 2 つのスペースを 1 つのスペースに置き換えます。
$word = ereg_replace(" ", " ", $word);
$word を返します。
}
$color = "000000";
$size = 1;
$bullets = 0;
// アップロードされたファイルを配列に読み取ります。
//
$rtfile = file($userfile);
$fileLength = count($rtfile);
// 配列の残りの部分をループします
for($i = 1; $i < $fileLength; $i++) {
/*
** 行に「colortbl」が含まれている場合、カラーテーブルが見つかりました。
** これを赤、緑、青にそれぞれ分割する必要があります
** それを 16 進数に変換してから、赤、緑、青を元に戻します。
** 次に、それぞれを fcolor という配列に保存します。
*/
if(ereg("^{\colortbl", $rtfile[$i])) {
// バックスラッシュで行を分割します。
$colors =explode("\", $rtfile[$i]);
$numOfColors = count($colors);
for($k = 2; $k < $numOfColors; $k++) {
//
// ここには何種類の色があるかを調べます。
if(ereg("[0-9]+", $colors[$k], $matches)) {
$match[] = $matches[0];
}
}

// 各色を 16 進数に変換します。
$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);
}
// あるいは、
// ff 単語とタグを取り出して、行を解析します。
else {
$token = "";
$start = 0;
$lineLength = strlen($rtfile[$i]);
for($k = 0; $k < $lineLength; $k++) {
if($rtfile[$i][$start] == "\" && $rtfile[$i][$start + 1] != "\") {
// 今、タグを扱っています。
$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] == "{") {
// 今、タグを扱っています。
$token .= $rtfile[$i][$k];
if($rtfile[$i][$k] == "}") {
$newFile[$i] .= ProcessTags($token, $i);
$token = "";
$start = $k + 1;
}
}
else {
// 今、単語を扱っています。
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");
}
?>




  

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/316327.html技術記事 RTF 形式のファイルを HTML に変換し、ネットワーク上に表示される代コードはこのような作業であり、RTF 形式のファイルを上に転送し、その後 HTML に変換して表示されます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。