通过url进行传值,是php中一个传值的重要手段。所以我们要经常对url里面所带的参数进行解析,如果我们知道了url传递参数名称,例如

/index.php?name=tank&sex=1#top

我们就可以通过$_GET['name'],$_GET['sex']来获得传的数据。但是如果我们不知道这些变量名又怎么办呢?这也是写这篇博文的目的,因为自己老是忘,所以做个标记,下次就不要到处找了。

我们可以通php的变量来获得url和要传的参数字符串

$_SERVER["QUERY_STRING"] name=tank&sex=1

$_SERVER["REQUEST_URI"] /index.php?name=tank&sex=1

javascript也可以获得来源的url,document.referrer;方法有很多

1,利用pathinfo

<?php
$test = pathinfo("http://localhost/index.php");
print_r($test);
?>
结果如下
Array
(
[dirname] => http://localhost //url的路径
[basename] => index.php //完整文件名
[extension] => php //文件名后缀
[filename] => index //文件名
)

2,利用parse_url

<?php
$test = parse_url("http://localhost/index.php?name=tank&sex=1#top");
print_r($test);
?>
结果如下
Array
(
[scheme] => http //使用什么协议
[host] => localhost //主机名
[path] => /index.php //路径
[query] => name=tank&sex=1 // 所传的参数
[fragment] => top //后面根的锚点
)

3,利用basename

<?php
$test = basename("http://localhost/index.php?name=tank&sex=1#top");
echo $test;
?>
结果如下
index.php?name=tank&sex=1#top

上面三种方法,我们基本上,就可以得我们所要的东西了。其实还有一种方法就是用正则,也可以很快的得到我们想到的数据。

传递的参数方式有很多,但是主要有这二种,一种是,name=tank&sex=1#top;一种是,name=tank&sex=1。

<?php
preg_match_all("/(\w+=\w+)(#\w+)?/i","http://localhost/index.php?name=tank&sex=1#top",$match);
print_r($match);
?>
结果如下
Array
(
[0] => Array
(
[0] => name=tank
[1] => sex=1#top
)
[1] => Array
(
[0] => name=tank
[1] => sex=1
)
[2] => Array
(
[0] =>
[1] => #top
)
)
<?php
preg_match_all("/(\w+)=(\w+)/i","http://localhost/index.php?name=tank&sex=1",$match);
print_r($match);
?>
结果如下
Array
(
[0] => Array
(
[0] => name=tank
[1] => sex=1
) [1] => Array
(
[0] => name
[1] => sex
) [2] => Array
(
[0] => tank
[1] => 1
) )

要的数据都匹配出来了,好长时间搞正则了,手都有点生了。上面正则中的规则不是死的,规则是根据url来推测的。

最新文章

  1. SpringMVC的执行流程(二)
  2. IOS管理文件和目录
  3. 【hihoCoder】1121:二分图一&#183;二分图判定
  4. 辗转相除法求最大公约数,非goto
  5. Gulp安装及配合组件构建前端开发一体化
  6. linux, configure --prefix=/有什么用
  7. 怎么通过 Microsof Office Project 2010 来写功能开发计划
  8. Oracle基础(八) 数据完整性
  9. 免费的HTML5连载来了《HTML5网页开发实例详解》连载(三)DOCTYPE和字符集
  10. (转)apache的keepalive和keepalivetimeout(apache优化)
  11. 【从0開始Tornado建站】群聊
  12. SuperSocket源码解析之消息处理
  13. hdu1087Super Jumping! Jumping! Jumping!(最大递增序列和)
  14. CodeVS 3415-最小和
  15. 【R与数据库】R + 数据库 = 非常完美
  16. Python Base64 编码
  17. html和css的使用方法以及样式
  18. etcd集群部署与遇到的坑
  19. centos 网卡聚合及Cisco交换机链路聚合
  20. sublime 一些常用功能和快捷键

热门文章

  1. js modify local file
  2. 使用Qt发送HTTPS请求
  3. CocoaPods初体验
  4. iOS中区分照片的来源
  5. html5--6-56 阶段练习5-翻转效果
  6. RandomUtils
  7. 书写优雅的shell脚本(二)- `dirname $0`
  8. ubuntu openjdk 7 升级 8
  9. 安装YouCompleteMe时,编译依赖的python版本不对
  10. python-----删除列表中某个元素的3种方法