自動把純文字轉換成Web頁面的php代碼

來源:互聯網
上載者:User

首先讓我們來看一個我朋友希望轉換的純文字檔案的例子:
以下為引用的內容: 複製代碼 代碼如下:  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用Regex來檢測,兩邊是元素。當頁面在Web瀏覽器裡顯示的時候,它會把URL轉換成為可點擊的超連結。
然後用標準的HTML規則建立輸出的HTML頁面。文章的標題、作者和本文都用CSS樣式規則格式化。儘管這段指令碼沒有這樣做,但是你可以在這個地方自訂最終頁面的外觀,你可以向模板添加圖形元素、顏色或者其他眩目的內容。
一旦HTML頁面構建完成,它就可以被送到瀏覽器或者用file_put_contents()儲存為靜態檔案。要注意的是,在儲存的時候,原來的檔案名稱會被分解,一個新的檔案名稱(叫做filename.html)會為新建立的Web頁面建立。你然後就可以把這個Web頁面發布到Web伺服器上、儲存到光碟片上或者對它進行進一步編輯。
注意:在使用這個指令碼建立和儲存HTML檔案到磁碟的時候,你要確保這個指令碼對檔案儲存的目錄有寫入權限。
正如你看到的,假如你有標準格式的ASCII純文字資料檔案,你可以相當迅速用PHP把它轉換成為可使用的Web頁面。如果你已經有了一個Web網站,並計劃把新的Web頁面加入進來,那麼調試頁面產生器所使用的模板,使之適應原有Web網站的外觀是相當容易的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.