变相怪杰 发表于 2015-2-3 23:59:59

PHP网页设计用PHP主动把纯文本转换成Web页面

告诉你了一个方式,但是缺少努力这一环节,那也是白搭。     比来,我的一个老伴侣向我打德律风乞助。他从事记者的职业有多年了,比来取得了从头出书他的良多初期专栏的权力。他但愿把他的作品贴在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-4 07:55:36

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。

再现理想 发表于 2015-2-9 13:58:47

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

变相怪杰 发表于 2015-2-14 15:43:15

多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。

兰色精灵 发表于 2015-3-4 07:07:24

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

愤怒的大鸟 发表于 2015-3-6 17:12:54

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

莫相离 发表于 2015-3-13 04:30:26

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

深爱那片海 发表于 2015-3-15 21:58:39

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

因胸联盟 发表于 2015-3-20 12:29:05

爱上php,他也会爱上你。

谁可相欹 发表于 2015-4-5 12:17:20

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

透明 发表于 2015-4-5 23:45:45

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。

海妖 发表于 2015-4-17 23:48:51

Ps:以上纯属原创,如有雷同,纯属巧合

仓酷云 发表于 2015-4-25 05:49:01

基础有没有对学习php没有太大区别,关键是兴趣。

小魔女 发表于 2015-5-6 08:12:29

基础有没有对学习php没有太大区别,关键是兴趣。

小妖女 发表于 2015-5-6 12:45:09

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql

乐观 发表于 2015-5-11 07:18:12

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

爱飞 发表于 2015-6-4 02:44:22

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

分手快乐 发表于 2015-7-23 22:57:04

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

老尸 发表于 2015-7-25 00:18:00

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

若相依 发表于 2015-7-28 10:23:22

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
页: [1]
查看完整版本: PHP网页设计用PHP主动把纯文本转换成Web页面