标题: PHP网站制作之用PHP完成主动把纯文本转换成Web页面 [打印本页] 作者: 深爱那片海 时间: 2015-2-4 00:00 标题: PHP网站制作之用PHP完成主动把纯文本转换成Web页面 理解动态语言的概念,运做机制,熟悉PHP语法 比来,我的一个老伴侣向我打德律风乞助。他从事记者的职业有多年了,比来取得了从头出书他的良多初期专栏的权力。他但愿把他的作品贴在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");
?>