文档章节

3个解析url的php函数

h
 hanbingtel
发布于 2015/06/12 19:12
字数 492
阅读 7
收藏 0

通过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
        )
)
要的数据都匹配出来了,好长时间搞正则了,手都有点生了。上面正则中的规则不是死的,规则是根据url来推测的。


© 著作权归作者所有

共有 人打赏支持
h
粉丝 0
博文 11
码字总数 1992
作品 0
济南
私信 提问
php parse_url()函数

parseurl — 解析 URL,返回其组成部分。 说明 array parseurl ( string $url ) 本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。 本函数不是用来验证给定 URL 的...

freedonn
2014/03/18
0
0
php parse_url 函数

parse_url : 解析URL并返回其组成部分 描述 混合parse_url,此功能解析一个URL并返回一个关联数组含有任何的各个组成部分的URL ,也存在着分歧。这个功能并不意味着验证给定网址,它不仅打破了...

xdl丶辉
2016/08/02
101
0
从零开始打造自己的PHP框架——第1章

目标 本篇,我们来实现类库自动加载,以及路由解析。 原文地址:http://www.voidking.com/2017/08/29/deve-vkphp-1/ 类库自动加载 常规加载 常规加载一般使用include或者require,它们最根本...

VoidKing
2017/09/13
0
0
PHP中URL美化心得分享

很早之前跟大家讨论过php的url美化, 比如实现oschina这种超美的url路径. 目标: 在程序中通过设定 $url_router 来实现常规url和美化url的切换, 例如: 新闻页: http://www.abc.com/news.php?i...

指点江山
2011/09/02
1K
6
从标准URL中获取后缀名的两种方式

如何从下面的标准URL中获取后缀名,要求尽可能高效: http://www.baidu.com/index.php?id=1234&a=qwer 用PHP来实现,主要有两个函数可以提供解决方案。 1、pathinfo()函数,实现代码如下: ...

crazymus
2015/10/16
652
0

没有更多内容

加载失败,请刷新页面

加载更多

react-native-storage(数据存储)文档介绍

中文doc:仅供参考 import Storage from 'react-native-storage'; import {AsyncStorage} from 'react-native'; var storage = new Storage({ // 最大容量,默认值1000条数据循环存储 ......

凌宇之蓝
14分钟前
2
0
jQuery 事件 - delegate() 方法

当点击鼠标时,隐藏或显示 p 元素: $("div").delegate("button","click",function(){ $("p").slideToggle();}); 定义和用法 delegate() 方法为指定的元素(属于被选元素的子元素)添加...

architect刘源源
23分钟前
1
0
java集合--Queue用法【转】

队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的 端称为队头。队列中没有元素时,称为空队...

中国扛把子
26分钟前
2
0
区块链教程汇总

区块链的重要性已经毋庸置疑,但对大多数跃跃欲试的开发者而言,去中心化思想、非对称加密、共识算法等技术点的理解和运用,都是入门区块链开发的挑战。合适的区块链开发教程可以极大地缩短区...

geek12345
26分钟前
2
0
js操作时间

获取当前时间 function getSystemDate(){ var systemDate = new Date(); // 获取当年 var year = systemDate.getFullYear(); // 获取当月 (月+1是因为js中......

简心
34分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部