3个解析url的php函数

摘要:
通过url传递值是php中传递值的一种重要方式。因此,我们应该始终解析URL中的参数。如果我们知道URL中传递的参数的名称,例如/index php?我们可以通过PHP$_SERVER[“QUERY_string”]name=tank&sex=1$_SERVICE[“REQUEST_URI”]/index中的变量获取要传递的url和参数字符串。php?Name=tank&sex=1 javascript还可以获取源url和文档引用;有很多方法。1.使用路径信息结果如下:Array2,使用parse_url结果如下:Array3,使用basename˂?事实上,另一种方法是使用正则化快速获得我们想到的数据。上述规则中的规则并未失效。规则是从url推断出来的。

通过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来推测的。


免责声明:文章转载自《3个解析url的php函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Atitit mysql redis mongodb 性能指标 目录 1.1. 二、 性能比较 1 1.2. 性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s 2 1Flume内存溢出错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jquery设置控件位置的方法

纯JS写法,代码如下: document.getElementById("child").style.left="800px";document.getElementById("child").style.top="200px";*/ //offset()获取当前元素基于浏览的位置var offsettop=$("#unamespan").offset(...

php获取form表单单选按钮和复选框的值

获取单选按钮的值 在<form>表单中,单选按钮 radio 一般是成一组一组出现的,具有相同 name值 和不同的 value 值,在一组单选按钮中,同一时间只可能有一个被选中。 来举一个单选按钮 radio的例子,在这个代码实例中有两个 name = "sexy" 的单选按钮,选中其中一个并单击"提交"按钮,将会返回被选中的单选按钮的 va...

微信小程序-上传多张图片加进度,持续修正中……

tips.参考网上资料的改进版 1.怎么使用.html <!--无限制需要在js代码里设置数量,upload为上传地址,或者说图片服务器 --> <up-pic url="{{upload}}"bindupImgData="upImgData"class='up-pic' notli/>...

rbac之 权限粒度控制到按钮级别

rbac之 权限粒度控制到按钮级别:  这里的意思就是 如果当前用户,没有这个权限。 那么这个相对应的这个按钮的权限, 就不应该展示。看都不能给看到。 思路:  为每一个权限,设置一个别名。  这里是这的别名。 要与 路由控制器中的,每条路径的 别名保持一直  模板中每一个按钮标签的位置,进行 if 判断。 判断这个别名是否在当前用户的,权限字典中。 如果...

iOS_网络_02_搭建本地Web服务器

搭建Apache(Web)服务器,在本地搭建开发用的网络测试环境 一、Web服务器   WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。Web服务器是可以向发出请求的浏览器提供文档的程序。   (1) 服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应   (...

drf之框架基础

(一)drf基础 全称:django-rest framework 接口:什么是接口、restful接口规范(协议) CBV(基于FBV的基础上形成)、CBV生命周期源码----基于restful规范下的CBV接口 请求生命周期:请求组件、解析组件、响应组件 序列化组件(序列化、反序列化简单来说就是对象转为字符串、字符串转为对象,目的是为传输数据(传给别的...