首先让我们看一个我朋友希望转换的纯文本文件的例子:
以下为引用的内容:
复制代码代码如下:
约翰·R·多伊
来自火星的小绿人的想法长期以来一直是科幻小说的主要内容,但很快可能就会变得不再是幻想,而是更多的事实。
最新火星探测队发送的最新样本表明,大气中叶绿素含量很高。您可能还记得,叶绿素使植物呈绿色。因此,火星上的生物体很可能通过持续接触绿色物质,在其外骨骼上形成绿色色调。
对 ASDA 火星殖民项目负责人 Rushel Bunter 博士的采访等等……
这对你来说意味着什么?嗯,这意味着等等等等......
相当标准的文本:它有一个标题、一个署名和很多文字。本文文档转换成HTML真正需要做的是使用HTML的分行和分段标记把原文的布局保留在Web页面上。特殊的标点符号需要被转换成对应的HTML符号,超链接需要重组点击才可以。
下面的PHP代码(列表A)就会完成上面所有的任务:
列表A
让我们来看看它是如何工作的:
复制代码代码如下:
//设置源文件名和路径
$source = "toi200686.txt";
// 将原始文本读取为数组
$raw = file($source) or die("Cannot read file");
// 检索第一行和第二行(标题和作者)
$slug = array_shift($raw);
$byline = array_shift($raw);
// 将剩余数据连接成字符串
$data = join('', $raw);
// 用 HTML 实体替换特殊字符
// 用
替换换行符
$html = nl2br(htmlspecialchars($data));
// 将多个空格替换为单个空格
$html = preg_replace('/ss /', ' ', $html);
// 用 元素替换 URL
$html = preg_replace('/s(w ://)(S )/', ' ', $html);
// 开始构建输出页面
// 添加页眉
$output =
.slug {字体大小:15pt;字体粗细:粗体}
.byline { 字体样式:斜体 }
HEADER;
// 添加页面内容
$output .= "
$slug
";
$output .= "
通过 $byline
";
$output .= "$html";
// add page footer
$output .=
FOOTER;
// display in browser
echo $output;
// AND/OR
// write output to a new .html file
file_put_contents(basename($source, substr($source, strpos($source, '.'))) . ".html", $output) or die("Cannot write file");
?>
第一步是把纯ASCII文件读取到一个PHP数组里。这通过file()函数很容易就可以完成,这个函数会把文件的每一行都转换成为一个用数字索引的数组中的元素。
然后,标题和作者行(我假设这两个都是文件的前两行)都通过array_shift()函数从数组里提取出来,放到单独的变量里。数组剩下的成员然后被连接成一个字符串。这个字符串现在就包括了整篇文章的正文。
文章正文里像“'”、“”这样的特殊符号通过htmlspecialchars()函数被转换成相应的HTML符号。为了保留文章的原始格式,分行和分段通过nl2br()函数被转换成HTML的
元素。文章中间多个空格通过简单的字符串替换被压缩成为一个空格。
文章正文里的URL用正则表达式来检测,两边是元素。当页面在Web浏览器里显示的时候,它会把URL转换成为可点击的超链接。
然后用标准的HTML规则创建输出的HTML页面。文章的标题、作者和正文都用CSS样式规则格式化。尽管这段脚本没有这样做,但是你可以在这个地方自定义最终页面的外观,你可以向模板添加图形元素、颜色或者其他眩目的内容。
一旦HTML页面构建完成,它就可以被送到浏览器或者用file_put_contents()保存为静态文件。要注意的是,在保存的时候,原来的文件名会被分解,一个新的文件名(叫做filename.html)会为新创建的Web页面创建。你然后就可以把这个Web页面发布到Web服务器上、保存到光盘上或者对它进行进一步编辑。
注意:在使用这个脚本创建和保存HTML文件到磁盘的时候,你要确保这个脚本对文件保存的目录有写权限。
正如你看到的,假如你有标准格式的ASCII纯文本数据文件,你可以相当迅速用PHP把它转换成为可使用的Web页面。如果你已经有了一个Web网站,并计划把新的Web页面加入进来,那么调试页面生成器所使用的模板,使之适应原有Web网站的外观是相当容易的