PHP:解析url和查询参数query

举报
彭世瑜 发表于 2022/05/17 22:29:45 2022/05/17
【摘要】 解析url信息 <?php $url = 'https://www.php.net/manual/zh/language.types.php?name=Tom&age=23'; // ...

解析url信息

<?php

$url = 'https://www.php.net/manual/zh/language.types.php?name=Tom&age=23';

// 方式一:parse_url
print_r(parse_url($url));
// Array
// (
//     [scheme] => https
//     [host] => www.php.net
//     [path] => /manual/zh/language.types.php
//     [query] => name=Tom&age=23
// )


// 方式二:pathinfo
print_r(pathinfo($url));
// Array
// (
//     [dirname] => https://www.php.net/manual/zh
//     [basename] => language.types.php?name=Tom&age=23
//     [extension] => php?name=Tom&age=23
//     [filename] => language.types
// )


// 方式三:basename
print_r(basename($url));
// language.types.php?name=Tom&age=23


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

解析查询参数

<?php

/**
 * 将字符串参数变为数组
 * @param $query string
 * @return array
 * */
function decodeUrlQuery($query_str)
{
    $query_pairs = explode('&', $query_str);
    $params = [];
    foreach ($query_pairs as $query_pair) {
        $item = explode('=', $query_pair);
        $params[$item[0]] = $item[1];
    }
    return $params;
}
/**
 * 将参数变为字符串
 * @param $query_array array
 * @return string 
 */
function encodeUrlQuery($query_array)
{
    $tmp = array();
    foreach ($query_array as $key => $value) {
        $tmp[] = $key . '=' . $value;
    }

    return implode('&', $tmp);
}

// 示例
$url = 'https://www.php.net/manual/zh/language.types.php?name=Tom&age=23';

// 字符串转数组
$query_str = parse_url($url)['query'];
$query_array = decodeUrlQuery($query_str);
print_r($query_array);
// Array
// (
//     [name] => Tom
//     [age] => 23
// )


// 数组转字符串
print_r(encodeUrlQuery($query_array));
// name=Tom&age=23

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

扩展:查询字符串编码

使用php自带的查询参数编码函数

$data = [
    'name' => 'Tom',
    'age'  => 23
];

echo encodeUrlQuery($data) . PHP_EOL;
// name=Tom&age=23

echo  http_build_query($data) . PHP_EOL;
// name=Tom&age=23

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

如果是中文字符就会被编码

$data = [
    'name' => '汤姆',
    'age' => 23
];

echo encodeUrlQuery($data) . PHP_EOL;
// name=汤姆&age=23

echo  http_build_query($data) . PHP_EOL;
// name=%E6%B1%A4%E5%A7%86&age=23

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

参考
php解析url并得到url中的参数及获取url参数的四种方式

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/124818281

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。