PHP网页编程之将RTF格局的文件转成HTML并在网页中显示...
培训的第二阶段,开始了PHP语言语法结构和应用的学习。 将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", $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", $tags, $temp)) {
$size = ereg_replace("\\\fs", "", $temp);
$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)||(\\\fs)", $tags)) {
$html .= "</font><font size=$size color=$color>";
}
// WordStr \tab with alternating spaces
// and nonbreakingwhitespaces.
if(ereg("\\\(tab)", $tags)) { $html .= " "; }
return $html;
}
function ProcessWord($word) {
// WordStr \\ with \
$word = ereg_replace("[\\]{2,}", "\\", $word);
// WordStr \{ with {
$word = ereg_replace("[\\][\{]", "\{", $word);
// WordStr \} with }
$word = ereg_replace("[\\][\}]", "\}", $word);
// WordStr 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("+", $colors[$k], $matches)) {
$match[] = $matches;
}
}
// 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>
也许您在学习PHP的时候只想尽快的开发一个网站,也就会想我做网站,干嘛要学什么网页这些小儿科?不难看出,眼高手低的新手不在少数,这种思想无疑于建造空中楼阁,你不建地基,何来的房顶呢? 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。 我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。 最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。 你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。 作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 当然这种网站的会员费就几十块钱。
页:
[1]