译者注:本文原名《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";

}?>

如何用php弄导航栏,怎样用PHP来给网页做导航栏相关推荐

  1. 使用php制作导航栏,怎样用PHP来给网页做导航栏

    怎样用PHP来给网页做导航栏 2000-12-18 16:29:50 来源:WEB开发网 核心提示:怎样用php来给网页做导航栏 原作:Brad Bulger译文:李平 译者注:本文原名<Sit ...

  2. php 导航栏链接网页,怎样用php来给网页做导航栏_php实例

    怎样用PHP来给网页做导航栏 原作:Brad Bulger 译文:李平 译者注:本文原名<Site Navigation with PHP>,原文详述了如何用PHP编程来做出效果理想的网页 ...

  3. HTML字母导航栏怎么做,如何用css做导航栏?

    如何用css做导航栏? 1.新建一个html文件,在head部分,编写css样式 ○ list-style-type: none;是除掉导航前面默认带的点 ○ li a,li a.active ,li ...

  4. layui导航栏页面滚动固定_网站建设页面导航如何降低用户寻找的时间

    做为正确引导客户体验网站的莱单导航栏,从检索视角上而言,也起着关键的功效,莱单导航栏不但联系网站的外界,也联系着网站主页面及其别的网页,是全部网站的"管理中心",因此网站建设中莱单 ...

  5. html 导航栏设计,在网页中设计导航菜单的三个原则(附案例)

    导航菜单可能是网页设计中最重要的部分了.每个用户浏览网站时一定有所需,因此导航菜单能够帮助用户寻找信息.好的导航菜单像是导游,告诉用户网站是干什么的,内容分类有哪些,在哪里可以找到什么信息. 而且导航 ...

  6. php网页设计导航栏代码,CSS导航栏及弹窗示例代码

    最近整理了CSS导航栏及弹窗,具体如下: CSS导航 先来看下效果: Insert your title body{ font-size:12px; } #discuss{ width:990px; ...

  7. 微信开发 Weixin JS接口 隐藏微信中网页底部导航栏

    公众号在有需要时(如认为用户在该页面不会用到浏览器前进后退功能),可在网页中通过JavaScript代码隐藏网页底部导航栏. 接口调用代码(JavaScript) document.addEventL ...

  8. 页面最上方的搜索和logo叫什么_网页顶部导航栏设计总结

    网页中顶部导航栏往往是用户进入网站后最先看到的地方,决定着用户对网页的第一印象,其重要性不言而喻. 网页中的header,一般我们称之为顶部导航栏,这里为了行文方便,以下都简称顶部栏.顶部栏对于一个网 ...

  9. IOS 滑动tableview,导航栏渐渐显示,搜索框显示在导航栏上

    先看下效果图 这样的效果图我们在很多app上也看到过,正好我们的项目中有需要,就来实现下. 该效果有两种解决方案: 一.自定义导航栏,在scrollViewDidScroll方法中,改变导航栏的颜色和 ...

最新文章

  1. 技术面试,高效求职准则
  2. 【中继协助频谱切换】基于中继协助的频谱切换机制的MATLAB仿真
  3. 常用的认证机制之session认证和token认证
  4. python3.8.5依赖的urllib版本_Python(pip)-请求依赖警告:urllib3(1.9.1)或chardet(2.3.0)与受支持的版本不匹配...
  5. Angular开发模式下的setNgReflectProperties函数
  6. document.body.scrollTop以及一些备忘
  7. 物联网卡加持智能电网,发展更具优势
  8. linux查漏补缺之常用命令
  9. oracle数据量大时候分区索引思路
  10. Spring Boot笔记-自动配置(Spring Boot封装成jar被其他项目引用)
  11. Django(九)admin相关知识
  12. Linux入门(3)_Linux常用命令(待完善)
  13. eclipse 安装svn插件(Subclipse)
  14. 剑指offer——面试题22:栈的压入、弹出序列
  15. 一个有趣的例子,JS+CSS实现【兴趣是最好的老师】
  16. python中出现nameerror_python类中出现NameError的问题
  17. Adobe Acrobat 9 Pro打印提示“你需要先安装打印机方可执行打印相关任务,例如页面设置和打印文档。”解决
  18. python中复数类型虚部为零时表示为_关于 Python 的复数类型,以下选项中描述错误的是...
  19. android微博图片上传,安卓开发 新浪微博share接口实现发带本地图片的微博
  20. ZooKeeper报错:Unable to access datadir, exiting abnormally windows版本

热门文章

  1. python 2.6.6安装MySQL-python模块
  2. [C# 网络编程系列]专题十:实现简单的邮件收发器
  3. netmon工作原理
  4. 管理类业务系统菜单部分美化经验分享,把所有好的东西拿过来拼凑并不容易能形成整体的效果...
  5. java bio_Java BIO及实现
  6. 生产者/消费者模型详解(基于Java)
  7. kalman滤波从应用到推导
  8. python中的for else
  9. numpy.array()基本操作
  10. 直播活动丨BMMeetup第1期:大模型Prompt Tuning技术,8场学术报告和Poster提前下载...