使用PHP自动把纯文本转换成网页
2024年02月21日
最近,我的一个老朋友向我打电话求助。他从事新闻工作者的职业已经很多年了,最近获得了重新出版他的很多早期专栏的权利。他希望把他的作品贴在网络上;但是他的专栏都是以纯文本文件的形式保存的,而且他既没有时间也不想把它们转换成网页而学习HTML的知识。由于我是他电话里唯一一个精通计算机的人,所以他打电话给“让我来处理吧,”我说:“一个小时以后再给我打电话。”当然了,当他几个小时以后打电话过来时,我已经为他准备好了有了解决的方法。这需要用到一点PHP完成,而我收获了他没有还的感谢和一箱连续。
那么我在这一个小时里做了些什么呢?这就是这篇文章的内容。我将告诉你如何使用PHP来快速将纯ASCII文本完美地转换成可执行的HTML标记。
首先让我们来看一个我朋友希望转换的纯文本文件的例子:
Green for Mars!
约翰·R·多伊(John R.Doe)
来自火星的小绿人的想法长期以来一直是科幻小说的主要内容,但很快可能就会变得不再是幻想,而是更多的事实。
最新火星探测队最近发送的样本表明,大气中叶绿素含量很高。您可能还记得,叶绿素使植物呈绿色。因此,火星上的生物体很可能通过持续接触绿色物质,在其外骨骼上形成绿色色调。
对ASDA火星殖民项目负责人Rushel Bunter博士的采访等等……
这对你来说意味着什么?嗯,这意味着等等等等……
在线跟踪这个故事的后续内容,请访问http://www.mars-connect.dom/。要查看最新示例的图片,请登录http://www.asdamcp.dom/galleries/220/
相当标准的文本:它有一个标题、一个署名和很多段文字。把这个文档转换成HTML真正需要做的是使用HTML的分行和分段标记把原文的布局保留在网页上。下面特殊的标点符号需要被转换成对应的HTML符号,超链接需要整合可以点击。的PHP代码(
列表A)就可以完成上面所有的任务:
列表A
让我们来看看它是如何工作的:
以下是引用片段:
<?php
//设置源文件名和路径
$source="toi200686.txt";
//将原始文本读取为数组
$raw=file($source)或die("Cannot read file");
//检索第一行和第二行(标题和作者)
$slug=array_shift($raw);
$byline=array_shift($raw);
//将剩余数据连接到字符串
$data=join('',$raw);
//用HTML实体替换特殊字符
//用<br/>替换换行符
$html=nl2br(htmlspecialchars($data));
//将多个空格替换为单个空格
$html=preg_replace('/ss/','',$html);
//将URL替换为<a href...>元素
$html=preg_replace('/s(w://)(S)/','<a href=""target="_blank"></a>',$html);
//开始构建输出页面
//添加页眉
$output=<<<HEADER
<html>
<head>
<style>
.slug{font-size:15pt;字体粗细:粗体}
.byline{字体样式:斜体}
</style>
</head>
<body>
HEADER;
//添加页面内容
$output.="<div class='slug'>$slug</div>";
$output.="<div class='byline'>由$byline</div><p/>";
$output.="<div>$html</div>";
//添加页脚
$output.=<<<FOOTER
</body>
</html>
FOOTER;
//在浏览器中显示
echo$output;
//AND/OR
//将输出写入新的.html文件
file_put_contents(basename($source,substr($source,strpos($source,'.'))).".html",$output)或die(“无法写入文件”);
?>
第一步是将纯ASCII文件读取到一个PHP数据库里。这个通过file()函数很容易就可以完成,这个函数把文件的每一行都转换成一个用数字索引的数据库中的元素。
然后,标题和行(我假设这两个都是文件的前两行)都通过array_shift()函数从磁盘里取出来作者,放到单独的变量里。磁盘剩余的成员然后被连接成一个字符串。这个字符串现在就包括了整篇文章的正文。
文章正文里像“'”、“<”和“>”这样的特殊符号通过htmlspecialchars()函数被转换成相应的HTML符号。为了保留文章的原始格式,分行和分段通过nl2br()函数被转换成HTML的
元素。文章中间的多个空格通过简单的字符串替换被压缩成一个空格。
文章正文里的URL用正则表达式来检测,两边是元素。当页面在Web浏览器里显示的时候,它会把URL转换成可点击的超链接。
然后用标准的HTML规则创建输出的HTML页面。文章的标题、作者和正文都用CSS样式规则整理。尽管脚本脚本没有这样做,但是您可以在这个位置自定义页面的外观,您可以向模板添加图形元素、颜色或者其他感染目的。一旦
HTML页面构建完成,它就可以被发送浏览器或者用file_put_contents()保存为静态文件。要注意的是,在保存的时候,原来的文件名会被拆分,一个新的文件名(称为filename.html)会为新创建的网页创建。然后你就可以把这个网页发布到Web服务器上、保存到光盘上或者对它进行进一步编辑。注意
:在使用这个脚本创建和保存HTML文件到磁盘的时候,你要确保这个脚本对文件保存的目录有写入权限。
正如你看到的,假设你有标准格式的ASCII纯文本数据文件,你可以相当快地用PHP把它转换成可使用的网页。如果你已经有了一个网站,并计划把新的网页加入进来,然后调试页面生成器所使用的模板,使适应原有网页的外观是相当容易的。你自己试试看!