设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> 网络编程 >> PHP >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
如何利用PHP和CSS改变网…
用php或js获取图片大小,…
使用PHP的Socket写的POP…
用PHP和AJAX创建RSS聚合…
使用PHP维护文件系统
使用php重新实现PHP脚本…
使用php 5时MySQL返回乱…
用PHP和MYSQL建立计数器…
用PHP实现标准的IP Whoi…
用 PHPRPC 实现 Ajax 级…
  怎样用PHP来给网页做导航栏         
怎样用PHP来给网页做导航栏
 

译者注:本文原名《Site Navigation with PHP》,原文详述了如何用PHP编程来做出效果理想的网页导航条,本文只选译了其中的部分文章,所选取的部分是文章精髓之所在,只要大家能弄懂这部分内容就可以用同样的原理、思想做出我们需要的效果来,希望给读者能起到抛砖引玉的作用。本文只需要读者具备PHP、HTML的初步知识就可以基本读懂了。

  译 文:如大家所知PHP对于用数据库驱动的网站(making database-driven sites)来讲可谓功能强大,可是我们是否可以用它来做点其他事情呢?PHP给了我们所有我们期望的工具:for与while的循环结构、数学运算等等,还可以通过两种方式来引用文件:直接引用或向服务器提出申请。其实何止这些,让我们来看一个如何用它来做导航条的例子:

  完整的原代码:



<? 

# and this '#' makes this a PHP comment. 



$full_path = getenv("REQUEST_URI"); 



$root = dirname($full_path); 

$page_file = basename($full_path); 

$page_num = substr($page_file 

, strrpos($page_file, "_") + 1 

, strpos($page_file, ".html") - (strrpos($page_file, "_") + 1) 

); 



$partial_path = substr($page_file, 0, strrpos($page_file, "_")); 



$prev_page_file = $partial_path . "_" . (string)($page_num-1) . ".html"; 

$next_page_file = $partial_path . "_" . (string)($page_num+1) . ".html"; 



$prev_exists = file_exists($prev_page_file); 

$next_exists = file_exists($next_page_file); 



if ($prev_exists) 

{ 

print "previous"; 

if ($next_exists) 

{ 

print " | "; 

} 

} 

if ($next_exists) 

{ 

print "next"; 

} 



?>//原程序完。 

  代码分析:

  OK! 前面做了足够的铺垫工作,现在让我们来看看如何来用PHP来完成这项工作:



< ? 

# and this '#' makes this a PHP comment. 



$full_path = getenv("REQUEST_URI"); 



$root = dirname($full_path); 

$page_file = basename($full_path); 

  PHP函数getenv()用来取得环境变量的值,REQUEST_URI的值是紧跟在主机名后的部分URL,假如URL是http://www.yourmom.com/dinner/tuna_1.html, 那它的值就为/dinner/tuna_1.html. 现在我们将得到的那部分URL放在变量$full_path中,再用dirname()函数来从URL中抓取文件目录,用basename()函数取得文件名,用上面的例子来讲dirname()返回值:/dinner/;basename()返回:tuna_1.html。接下来的部分相对有些技巧,假如我们的文件名以story_x的格式命名,其中x代表页码,我们需要从中将我们使用的页码抽出来。当然文件名不一定只有一位数字的模式或只有一个下划线,它可以是tuna_2.html,同样它还可以叫做tuna_234.html甚至是candy_apple_3.html,而我们真正想要的就是位于最后一个“_”和“.html”之间的东东。可采用如下方法:

 

$page_num = substr($page_file 

, strrpos($page_file, "_") + 1 

, strpos($page_file, ".html") - (strrpos($page_file, "_") + 1) 

); 

  substr($string, $start,[$length] )函数给了我们字符串$string中从$start开始、长为$length或到末尾的字串(方括号中的参数是可选项,如果省略$length,substr就会返回给我们从$start开始直到字符串末尾的字符串),正如每一个优秀的C程序员告诉你的那样,代表字符串开始的位置开始的数字是“0”而不是“1”。

  函数strrpos($string, $what)告诉我们字符串$what在变量$string中最后一次出现的位置,我们可以通过它找出文件名中最后一个下划线的位置在哪,同理,接着的strpos($string, $what)告诉我们“.html”首次出现的位置。我们通过运用这三个函数取得在最后一个“_”和“.html”之间的数字(代码中的strpos()+1代表越过“_”自己)。

  剩下的部分很简单,首先为上页和下页构造文件名:

 

$partial_path = substr($page_file, 0, strrpos($page_file, "_")); 



$prev_page_file = $partial_path . "_" . (string)($page_num-1) . ".html"; 

$next_page_file = $partial_path . "_" . (string)($page_num+1) . ".html"; 

  (string)($page_num+1)将数学运算$page_num+1的结果转化为字符串类型,这样就可以用来与其他字串最终连接成为我们需要的文件名。

  现在检查文件是否存在(这段代码假设所有的文件都位于同样的目录下),并最终给出构成页面导航栏的HTML代码。



$prev_exists = file_exists($prev_page_file); 

$next_exists = file_exists($next_page_file); 



if ($prev_exists) 

{ 

print "previous"; 

if ($next_exists) 

{ 

print " | "; 

} 

} 

if ($next_exists) 

{ 

print "next"; 

} 



?> 
Linux联盟收集整理

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-1-3 3:29:08
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持