PHP实现一个简单url路由功能.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP实现一个简单url路由功能

PHP实现一个简单url路由功能 如果一个页面的内容呈现,需要根据url上传递的参数来进行渲染。很多时候可能是这样子写:/xx?c=xm=xt=..,而我们看到的url往往是这样子的(以新浪微游戏的咖啡恋人为例) /ilovecoffee….这种URL设计看上去比前一种更好一点:) 如果我们访问一下不存在的游戏应用,例如/ilovecoffee222,则会输出如下的错误提示: ? 后面匹配到的项,指向了某个php页面,然后根据参数获取要访问的游戏应用标识,后数据库或者缓存里查询该应用标识,如果不存在则输出错误提示,如果应用存在则加载游戏应用链接地址。 ? 现在写一个php例子,假设我的ip为3,我加了一层名为router的路径,之后跟随的是 “/模块名/方法名/参数1的key/参数1的value/….” 类似这样的地址: 3/router/Hello/router/a/b/c/d/abc/index.html?id=3url=http:……………… 也就是要调用Ha这个模块中的router方法,并传入url后面的参数/a/b/c/d/index…………. ? 第一步,首先要在服务器的配置上对/router/路径进行拦截 ? 调用某个文件夹目录下的index.php页面,假定现在所有模块使用单独的文件存放于class目录下,该目录与router平级,如下图所示: ? ? 第二步,路由分发器的实现(index.php) 1: !Doctype html 2: html 3: head 4: title路由测试~~/title 5: meta http-equiv=content-type content=text/html; charset=utf-8 / 6: /head 7: body 8:? 9: ?php 10:? 11: date_default_timezone_set(Asia/Shanghai); 12:? 13: define(MODULE_DIR, ../class/); 14:? 15:? 16: $_DocumentPath = $_SERVER[DOCUMENT_ROOT]; 17: $_FilePath = __FILE__; 18: $_RequestUri = $_SERVER[REQUEST_URI]; 19:? 20: $_AppPath = str_replace($_DocumentPath, , $_FilePath); //==\router\index.php 21: $_UrlPath = $_RequestUri; //==/router/hello/router/a/b/c/d/abc/index.html?id=3url=http: 22:? 23: $_AppPathArr = explode(DIRECTORY_SEPARATOR, $_AppPath); 24:? 25: /** 26: * 3/router/hello/router/a/b/c/d/abc/index.html?id=3url=http: 27: * 28: * /hello/router/a/b/c/d/abc/index.html?id=3url=http: 29: */ 30:? 31: for ($i = 0; $i count($_AppPathArr); $i++) { 32: $p = $_AppPathArr[$i]; 33: if ($p) { 34: $_UrlPath = preg_replace(/^\/.$p.\//, /, $_UrlPath, 1); 35: } 36: } 37:? 38: $_UrlPath = preg_replace(/^\//, , $_UrlPath, 1); 39:? 40: $_AppPathArr = explode(/, $_UrlPath); 41: $_AppPathArr_Count = count($_AppPathArr); 42:? 43: $arr_url = array( 44: controller = index, 45: method = index, 46: parms = array() 47: ); 48:? 49: $arr_url[controller] = $_AppPathAr

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档