六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

PHP 深入例解 Webzine 編輯與發送(3)

[摘要]接上一篇PHP例解Webzine編輯和發送(二) 作為構建動態網頁的一種語言,PHP提供了一種簡化的方法來構造復雜而功能強大的與 Web 相關的程序。 Erik用一個原始的、現實世界的網站示例逐步說明了PHP的基本原理。本系列文章的第3、4部分介紹發送模塊如何向讀者呈現一個故事菜單,并說明...
接上一篇PHP例解Webzine編輯和發送(二)


作為構建動態網頁的一種語言,PHP提供了一種簡化的方法來構造復雜而功能強大的與 Web 相關的程序。 Erik用一個原始的、現實世界的網站示例逐步說明了PHP的基本原理。本系列文章的第3、4部分介紹發送模塊如何向讀者呈現一個故事菜單,并說明編輯模塊如何使作者能將故事提交給Webzine。
如果您是初次接觸PHP,您可能會驚喜地發現在實踐中它是多么易于使用。本文旨在使您對PHP的工作方式留下一個好的印象; 隨后您就可以確定它是否適合您。
簡介
在本文的第1、2部分,我介紹了Webzine 這個簡單PHP應用程序的發送部分。盡管只有大約3K的代碼,但它包含了許多功能。您已試用了這個應用程序,并開始研究它的后臺工作方式。我說明了應用程序如何向用戶顯示類別菜單并根據選擇顯示故事。我還使讀者對PHP應用程序的工作方式以及它們從調用頁接收參數的方式有了一定的了解。
本文是第3部分,您首先會了解到發送模塊是如何將故事菜單呈現給讀者的,然后還會快速查看一下使作者能向Webzine 提交故事的編輯模塊。
故事菜單
文件中的每個故事在主題菜單文件中都有對應的一行。我已決定將脫字符號("^")用作定界符來分隔文件中的不同項目,但您可以使用任何字符(制表符是一種通用的選擇)。下面是基本的布局:


故事編號^標題^圖像 URL^摘要

.

舉例來說,僅包含三個故事的主題菜單文件 (TradeShow.txt)可能如下所示:
清單1.包含三個故事的主題菜單文件


33^Great New Products This Year^/images/proddemo.jpg^Thursday's product demo ...
12^Opening Event Well Attended^/images/opnfoto.jpg^Ticket sales to the ...
5^Trade Show Opens^/images/tradelogo.gif^The Fourth Annual Trade Show ...




菜單驅動程序接受這些信息并向讀者提供一個故事概述。其工作方式如下:

首先,驅動程序將適當的條目編號從主題菜單文件復制到數組$stories 中。對于上面的示例,$stories[0]包含第一行(故事編號為 33),$stories[1] 包含故事編號 12,$stories[2] 包含故事編號5。您還需要統計數組中的元素個數,并將其保存在變量$numstories 中。

下一步,驅動程序將此信息提供給用戶,如下所示:

清單 2.驅動程序


for ($i=0; $i<$numstories; $i++) {
$storyinfo = split("\^", $stories[$i]);
$storynum = $storyinfo[0]; // 故事編號(例如 33)
$storydesc = $storyinfo[1]; // 故事標題(例如 "Great New Products This Year")。
$storyimg = $storyinfo[2]; // 圖像 URL(例如 http://cfan.net.cn/info/"/images/proddemo.jpg")。
$dtext = $storyinfo[3]; // 故事摘要(更長的文本說明)。
$url = "<a href=\"index.php3?topic=$topic&story=$storynum\">$storydesc</a><br>";
if ($i<10) {
$url = "<h2>" . $url . "</h2>";
if ($storyimg != "") {
$url = "<p><img align=" . ($i%2==1 ? "right" : "left")
. " src=\"$storyimg\"></p>\n"
. $url;
}
$url = "<hr>" . $url;
} else {
$url = "<h3>" . $url . "</h3>";
}
echo("$url\n");
echo("<p>$dtext</p>\n");
}




split函數將故事信息的內容從一個字符串復制到一個數組中。請注意,脫字符號前面加了一個反斜杠從而成為“轉義”字符。該程序將數組節點轉換為說明性更強的變量名,從而使代碼更易于閱讀。然后就會構造URL。if/else 結構對前10個故事的處理與對其他故事的處理不同。前10個故事有一個分隔線,使用H2標記,并包括一張照片(如果有)。剩余的故事使用H3標記,沒有分隔線,也沒有照片。這個處理突出顯示最新的故事,并保留較舊的故事供需要它們的讀者訪問。請注意,編號為奇數的的圖像是右對齊的,而編號為偶數的圖像是左對齊的。
作為本例的結束,為上面的 theTradeShow.txt 文件所生成的HTML代碼如下所示:
清單 3. 為 theTradeShow.txt 文件所生成的 HTML 代碼

<hr><p><img align=left src=http://cfan.net.cn/info/"/images/proddemo.jpg"></p>
<h2><a href="index.php3?topic=TradeShow&story=33">Great New Products This Year</a><br></h2>
<p>Thursday's product demo included a couple of exciting new
surprises from competing firms in the industry.</p>
<hr><p><img align=right src=http://cfan.net.cn/info/"/images/opnfoto.jpg"></p>
<h2><a href="index.php3?topic=TradeShow&story=12">Opening Event Well Attended</a><br></h2>
<p>Ticket sales to the Trade Show opening event were
up 15% from last year's show.</p>
<hr><p><img align=left src=http://cfan.net.cn/info/"/images/tradelogo.gif"></p>
<h2><a href="index.php3?topic=TradeShow&story=5">Trade Show Opens</a><br></h2>
<p>The Fourth Annual Trade Show opened 10/11/2000 to an enthusiastic reception
from attendees.</p>



單擊此處查看 index.php3的源代碼。在開始下一部分之前您可能希望查看整組源代碼。畢竟代碼的大小還不到3K!
編輯頁 "author.php3"
對編輯頁的分析不會像對發送模塊的分析那樣詳細,因為它比較長,而且我們已經討論了許多基本概念。
為了簡要說明一個 PHP 函數的基本結構,讓我們看一下編輯模塊中的complain函數。這是一個簡單的函數,但它是一個很好的入門級材料。
清單 4. 一個 PHP 函數示例

//通知用戶輸入問題。
function complain($problem) {
global $status;
if ($status != "") $status = $status . "&lt;br&gt;\n";
$status = $status . $problem;
}




您可以在代碼中的任何地方調用這個函數。例如,complain("The URL is too long."); 接收全局變量 $status并將這個新的錯誤消息追加到其尾部,如果 $status不為空,則在錯誤消息前添加一個換行符。
Prepend
prepend函數是編輯模塊中最重要的函數之一。它在文件的首行添加一個新條目。下面,我使用它將作者的新提交添加到主題菜單文件的開頭。
清單 5. prepend 函數

//在一個現有文件的開頭添加一行新內容。
function prepend($file,$string) {
// 有待改進 — 使用數據庫提高這個算法的可伸縮性。
// 目前限制為 100 個故事。
if (file_exists($file)) {
$filetext = file($file);
$lines = count($filetext);
} else {
$lines = 0;
}
if ($lines &gt; 100) $lines = 100;
$handle = fopen($file,"w");
fputs ($handle, "$string\n");
for ($i=0; $i&lt;$lines; $i++)
fputs ($handle, $filetext[$i]);
fclose ($handle);
}




如果文件存在,整個正文將存入 $filetext數組中。然后統計出行數。如果文件不存在,則認為它有零行。長度限制為100 行(實際上是 101 行,因為第一行是在開始計數之前添加的)。文件打開,程序首先將當前的字符串寫入文件中,然后再將剩余的行(最多100 行)寫入文件中。這 100 行以后的任何內容將被丟棄。
這個函數依賴于 PHP

內建的幾個重要的文件處理函數。下表說明了每個函數所進行的操作。


函數 說明
file_exists(string) 將字符串作為文件名,如果文件名當前存在,則返回 true。
file(string) 將字符串作為文件名,用一個數組返回文件的正文,每行分別對應一個數組元素。
請注意,行終止字符將位于數組中每行的尾部。
count(array) 返回數組中的元素個數。
fopen(string, mode) 字符串是一個文件名,模式是一個字符串,例如 "w" 表示寫入,"r"表示讀取。
打開文件,并返回一個句柄。
fputs(handle, string) 將字符串寫入指定的輸出文件中。必須指定一個文件句柄,
而不能以字符串形式指定文件名。
fclose(handle) 關閉文件,終止輸出。


Save
save函數將作者的輸入寫入一個文件中。因這個函數太長,
在此我不能逐行分析它,但我會強調幾個有趣的語句。

$entry = "$storynum^$storytitle^$storyimg^$synopsis";




上面的這個語句將$storynum、$storytitle、$storyimg和 $synopsis 變量連接起來,并用脫字符號作為分隔符。

內嵌的變量替代使它比顯式連接更容易且更有趣。


prepend("Main.txt",$entry);
$topicfile = "$subject.txt";
prepend($topicfile,$entry);



$entry變量的值被添加到主故事菜單文件和主題特定的故事菜單文件中。所以,如果變量$subject 等于 "Politics",它就被添加到文件"Politics.txt" 中。



主站蜘蛛池模板: 中文字幕日韩在线一区国内 | 青青青青青国产免费手机看视频 | 日本一区二区三区四区 | 中文字幕在线欧美 | 天堂网在线资源 | 日日摸夜夜摸无需播放器 | 又粗又大又硬又爽的免费视频 | 日韩福利在线 | 天天色天天爱 | 亚洲免费观看在线视频 | 中文字幕亚洲日本岛国片 | 午夜伦伦| 四虎精品免费永久在线 | 天天干天天拍天天操 | 日本一本二本在线观看 | 亚洲综合色在线观看 | 四虎影在线永久免费观看 | 色吧亚洲欧美另类 | 日本三级网站在线线观看 | 日韩欧美一区二区不卡看片 | 四虎4hu永久免费视频大全 | 日韩在线观看视频免费 | 日韩一区二区中文字幕 | 在线亚洲精品国产成人二区 | 中文字幕视频不卡 | 天天色综网 | 污视频在线免费观看 | 亚洲最大看欧美片网站 | 午夜影院普通用户体验区 | 亚洲人成网男女大片在线播放 | 午夜高清视频在线观看 | 亚洲精品国产福利片 | 天堂网www在线观看 天堂网www在线 | 欧美一级高清在线观看 | 搜索黄色毛片 | 日韩一二区 | 在线观看国产久青草 | 亚洲国产成人va在线观看网址 | 日本福利视频一区 | 欧美亚洲高清 | 青青草原影视 |