仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1926|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页设计用PHP主动把纯文本转换成Web页面

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:59:59 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
告诉你了一个方式,但是缺少努力这一环节,那也是白搭。     比来,我的一个老伴侣向我打德律风乞助。他从事记者的职业有多年了,比来取得了从头出书他的良多初期专栏的权力。他但愿把他的作品贴在Web上;然而他的专栏都是以纯文本文件的模式保留的,并且他既没有工夫也不想去为了把它们转换成为Web页面而进修HTML的常识。因为我是他德律风本里独一一个精晓盘算机的人,所以他打德律风给我看我是不是可以帮帮他。

  “让我来处置吧,”我说:“一个小时今后再给我打德律风。”固然了,当他几个小时今后打德律风过去,我已为他筹办好懂得决的办法。这需求用到一点点PHP,而我播种了他没完没了的感激和一箱红酒。

  那末我在这一个小时里做了些甚么呢?这就是本篇文章的内容。我将告知你若何利用PHP来疾速将纯ASCII文本完善地转换成为可读的HTML标志。

  起首让咱们来看一个我伴侣但愿转换的纯文本文件的例子:

  Green for Mars!

  John R. Doe

  The idea of little green men from Mars, long a staple of science fiction, may soon turn out to be less fantasy and more fact.

  Recent samples sent by the latest Mars exploration team indicate a high presence of chlorophyll in the atmosphere. Chlorophyll, you will recall, is what makes plants green. It's quite likely, therefore, that organisms on Mars will have, through continued exposure to the green stuff, developed a greenish tinge on their outer exoskeleton.

  An interview with Dr. Rushel Bunter, the head of ASDA's Mars Colonization Project blah blah...

  What does this mean for you? Well, it means blah blahblah...

  Track follow-ups to this story online at http://www.mars-connect.dom/. To see pictures of the latest samples, log on to http://www.asdamcp.dom/galleries/220/

  相当尺度的文本:它有一个题目、一个签名和良多段的文字。把这篇文档转换成为HTML真正需求做的是利用HTML的分行和分段标志把原文的结构保存在Web页面上。特别的标点符号需求被转换成为对应的HTML符号,超链接需求变得可以点击。

  上面的PHP代码(列表A)就会完成下面一切的义务:

  列表A

  让咱们来看看它是若何任务的:

以下是援用片断:
<?php
// set source file name and path
$source = "toi200686.txt";

// read raw text as array
$raw = file($source) or die("Cannot read file");

// retrieve first and second lines (title and author)
$slug = array_shift($raw);
$byline = array_shift($raw);

// join remaining data into string
$data = join('', $raw);

// replace special characters with HTML entities
// replace line breaks with <br />
$html = nl2br(htmlspecialchars($data));

// replace multiple spaces with single spaces
$html = preg_replace('/ss+/', ' ', $html);

// replace URLs with <a href...> elements
$html = preg_replace('/s(w+://)(S+)/', ' <a href="" target="_blank"></a>', $html);

// start building output page
// add page header
$output =<<< HEADER
<html>
<head>
<style>
.slug {font-size: 15pt; font-weight: bold}
.byline { font-style: italic }
</style>
</head>
<body>
HEADER;

// add page content
$output .= "<div class='slug'>$slug</div>";
$output .= "<div class='byline'>By $byline</div><p />";
$output .= "<div>$html</div>";

// add page footer
$output .=<<< FOOTER
</body>
</html>
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网站的外不雅是相当轻易的。你本人碰运气!学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后...
变相怪杰 该用户已被删除
沙发
 楼主| 发表于 2015-2-14 15:43:15 | 显示全部楼层
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-22 13:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表