Pear::Pager分页类简介

Pear的Pager分页类是一个很好用的php分页类,扩展性很强,能够适应各种分页情况的需求,至少我在几年间大大小小的项目里,基本上没有为分页额外写过代码,全部都是用的Pager,足见Pager的可用性之强.下面用代码来看看它的使用范例: 例子1 <?php require_once ‘Pager/Pager.php’; $params = array( ‘mode’ => ‘Jumping’, ‘perPage’ => 3, ‘delta’ => 2, ‘itemData’ => array(‘a’,’b’,’c’,’d’,’e’,[…omissis…],’z’) ); $pager = & Pager::factory($params); $data = $pager->getPageData(); $links = $pager->getLinks(); //$links is an ordered+associative array with ‘back’/’pages’/’next’/’first’/’last’/’all’ links //NB: $links[‘all’] is the same as $pager->links; //echo links to other pages: echo $links[‘all’]; //Pager can […]

也说站内链接

一葉千鳥在BLOG中提到站内链接的几个意见: 1,地球人都知道的不链 2,重复关键词只链首次出现 3,与文章实质无关的信息不链 4,作者和作者文章同时出现,只链文章 5,关联信息量少时,引用比做链接好 6,逼不得已才链搜索引擎 回想这段时间来,站内链接或多或少也是遵循这个原则,不象从前一般,写了一些文字根本就不链.我觉得做站内链接有个更大的好处就是: 在垃圾网站大肆抄袭你的文字之后,至少还能有几个链接回来 至于某些搜索引擎瞎了眼,把垃圾网站的内容靠前摆放,那也是无可奈何的事情,咱也是老实人,做点踏实事,对的住社会,促进了社会发展.

用php简单实现Search Engine Friendly的URL

上次写了Search Engine Friendly的URL设计 – 俺在这个事上面折腾,要实现这个 http://www.myhost.com/foo.php?a=A&b=B&c=C -> http://www.myhost.com/foo.php/a/A/b/B/c/C的url转换,实际上还有不同的办法. 比如说我用的是虚拟主机,也想实现url优化,但是我没有服务器权限,这时候可以从PATH_INFO来下手. 访问http://www.myhost.com/foo.php/a/A/b/B/c/C这个url的时候,如果apache的AllowPathinfo已经打开,用php访问$_SERVER[‘PATH_INFO’]可以获得a/A/b/B/c/C这串字符 这时候再用php加以解析: if(!empty($_SERVER[‘PATH_INFO’])) {  $paths = explode(‘/’, substr($_SERVER[‘PATH_INFO’], 1));  for($i = 0, $cnt = count($paths); $i < $cnt; $i++)   $_GET[$paths[$i]] = @(string)$paths[++$i]; } 这样就可以简单的将PATH_INFO转换为全局的$_GET数组,这样还有个好处 http://www.myhost.com/foo.php?a=A&b=B&c=C http://www.myhost.com/foo.php/a/A/b/B/c/C 上面的url同时可以访问,保证了通用性 

Search Engine Friendly的URL设计 – 俺在这个事上面折腾

最近的某个项目需要配合seo,改进php动态页面的url,这里首先参考了车东的 如何提高在Google中的排名(3) —— Search Engine Friendly的URL设计 其中有一段url rewrite的例子比较符合要求且改动最少: 一个更通用的能够将所有的动态页面进行参数映射的表达式是: 把 http://www.myhost.com/foo.php?a=A&b=B&c=C 表现成 http://www.myhost.com/foo.php/a/A/b/B/c/C。 RewriteRule (.*?\.php)(\?[^/]*)?/([^/]*)/([^/]*)(.+?)? $1(?2$2&:\?)$3=$4?5$5: [N,I] 这段例子我在自家的apache上操练了很久,反复的调试,修改httpd.conf,查看error.log,rewrite.log,失败的一塌糊涂,几乎让我产生巨大的挫败感.后来查看了apache手册的rewrite指南,发觉里面根本没有[N,I]这个I flag,这下终于明白,这个rewrite规则8成是在IIS上面适用,IIS和apache向来是世仇,通用就甭考虑了.这里又去麻烦网管大哥,讨得下面这段rewrite规则,基本满足需求: RewriteEngine on RewriteMap quux-map prg:/root/t.sh RewriteRule ^/(.*)\.php/(.*) /$1.php?${quux-map:$2} cat t.sh #!/bin/sh LOGFILE=/tmp/percent_rewrite.log cat /dev/null > $LOGFILE while read URL do NEWURL=$(echo “$URL” | sed -e ‘s/\([^/]*\)\/\([^/]*\)\//\1=\2\&/g’ | sed ‘s/[/&]$//’ | sed ‘s/\//=/’ ) echo “Changing $URL […]

path方式的分页类 – Pager::Pathing()

最近的一个项目,用path方式表现页面的url: http://www.foo.com/index.php/p/user:photo http://www.foo.com/index.php/p/user:photo/page/1 http://www.foo.com/index.php/p/user:photo/page/2 正常的页面url: http://www.foo.com/index.php?p=user:photo http://www.foo.com/index.php?p=user:photo&page=1 http://www.foo.com/index.php?p=user:photo&page=2 之前使用的分页类是Pear:Pager,在这时候就玩不转了,不管如何调整参数分页链接总是错误,于是写了个Pathing.php,专门用于path方式的分页,调用方法: $pager = Pager::factory(array(‘mode’ => ‘Pathing’));