url解析
来源:互联网 发布:全球拍软件 编辑:程序博客网 时间:2024/05/12 04:31
//规则
public $urlMap = array( array('module', '', '\w+', NULL), array( array('type', 't', '\d+', 0), array('page', 'p', '\d+', 1) ));
private function _parseUrl() { //$uri = "/xxxx/xxxxx/"; $uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ""; $uris = explode("/", trim($uri, "/")); for ($i=0, $n=0, $count=count($this->urlMap); $i<$count;){ $urlMap = $this->urlMap[$i]; if (is_array($urlMap[0])){ $ok = false; $match = $this->_isMatch($urlMap, $uris[$n]); foreach ($urlMap as $map){ $key = $map[0]; $this->defaultValue[$key] = $map[3]; if ($match && isset($uris[$n]) && preg_match("/".$map[1]."(".$map[2].")/", $uris[$n], $mat)){ $val = ($mat[1] === NULL || $mat[1] === 'undefined') ? $map[3] : $mat[1]; $this->urlResult[$key] = array( $map[1], $val, $map[3] ); $this->requestParams[$key] = $val; $ok = true; } else { $this->urlResult[$key] = array($map[1], $map[3], $map[3]); } } if ($ok) $n++; } else { $key = $urlMap[0]; $this->defaultValue[$key] = $urlMap[3]; $matchStr = "/^".$urlMap[1]."(".$urlMap[2].")$/"; if(isset($urlMap[4])){ $matchStr = "/^".$urlMap[1]."(".$urlMap[2].")".$urlMap[4]."$/"; } if (preg_match($matchStr, $uris[$n], $mat)){ $val = ($mat[1] === NULL || $mat[1] === 'undefined') ? $urlMap[3] : $mat[1]; if ($key == 'keyword') { if (strpos($val, '+') === false) { $val = rawurldecode($val); } else { $val = urldecode($val); } } $this->urlResult[$key] = array( $urlMap[1], $val, $urlMap[3] ); if(isset($urlMap[4])){ $this->urlResult[$key][] = $urlMap[4]; } $this->requestParams[$key] = $val; $n++; } else { $this->urlResult[$key] = array($urlMap[1], $urlMap[3], $urlMap[3]); } } $i++; }private function _isMatch($regexps, $str){ $ret = array(); foreach ($regexps as $val) { $ret[] = "({$val[1]}{$val[2]})?"; } $regexp = "/^".implode("", $ret)."$/"; return preg_match($regexp, $str);}url:
http://www.xxxx.com/abcde/t2/
解析后($this->requestParams):
Array ( [module] => abcde [type] => 2 [page] => 1 )
0 0
- 解析url
- URL解析
- URL解析
- 解析URL
- url解析
- url解析
- url解析
- 解析url
- 解析URL
- 解析url
- url解析
- 解析url
- url解析
- URL解析
- 解析URL
- python url格式解析
- url解析c算法
- BrowserManager 解析 URL
- MySql海量数据批量插入优化小结
- Django+gunicorn+Nginx环境的搭建
- 第十三课:法线贴图
- 从父亲那得到的启示
- Redis常用命令
- url解析
- SVN报错The working copy needs to be upgraded
- Yii默认控制器和默认操作设置
- 【VB.NET】——方法重载和方法重写的区别
- php缓存技术之Memcached
- 人脸识别关键问题研究(光照、姿态)
- Spring的一些xml配置技巧
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- 大数据课程体系-学习笔记-第一阶段-Java Thread