搜索
首页后端开发php教程php使用http_build_query,parse_url,parse_str创建与解析url

php使用http_build_query,parse_url,parse_str创建与解析url,有需要的朋友可以参考下。


1.http_build_query

http_build_query 可以创建urlencode之后的请求字符串。

  1. string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
复制代码



参数:
query_data
可以是数组或包含属性的对象。

一个query_data数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。

如果query_data是一个对象,只有public属性才会加入结果。

numeric_prefix
如果在基础数组中使用了数字下标同时给出了该参数,此参数值将会作为基础数组中的数字下标元素的前缀。

这是为了让 PHP 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。

arg_separator
除非指定并使用了这个参数,否则会用 arg_separator.output来分隔参数(php.ini中有此参数,默认是”&”)。

enc_type
默认使用 PHP_QUERY_RFC1738。

如果 enc_type 是 PHP_QUERY_RFC1738,则编码将会以 ? RFC 1738 标准和 application/x-www-form-urlencoded 媒体类型进行编码,空格会被编码成加号(+)。

如果 enc_type 是 PHP_QUERY_RFC3986,将根据 ? RFC 3986 编码,空格会被百分号编码(%20)。


例子1:只使用query_data参数

  1. $data = array(
  2. 'name' => 'fdipzone',
  3. 'gender' => 'male',
  4. 'profession' => 'programmer',
  5. 'explain' => 'a new programmer'
  6. );
  7. echo http_build_query($data);
  8. ?>
复制代码

输出:
name=fdipzone&gender=male&profession=programmer&explain=a+new+programmer



例子2: query_data使用一维下标数组,指定
numeric_prefix=info_,arg_separator=#,enc_type=PHP_QUERY_RFC3986

  1. $data = array('fdipzone','male','programmer','a new programmer');
  2. echo http_build_query($data, 'info_', '#', PHP_QUERY_RFC3986);
  3. ?>
复制代码

输出:

  1. info_0=fdipzone#info_1=male#info_2=programmer#info_3=a%20new%20programmer
复制代码
2.parse_url

parse_url 解析url,返回其组成部分

  1. mixed parse_url ( string $url [, int $component = -1 ] )
复制代码



参数:
url
要解析的url,无效字符将使用_来替换

component
PHP_URL_PATH、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一个来获取 URL 中指定的部分的 string。 (除了指定为 PHP_URL_PORT 后,将返回一个 integer 的值)。

返回值:
对严重不合格的 URL,parse_url() 可能会返回 FALSE。

返回的数据一般包含以下几种
scheme(如http),host,port,user,pass,path,query(在问号?之后),fragment(在散列符号#之后)


例子:

  1. $url = 'http://fdipzone:123456@www.fdipzone.com:80/test/index.php?id=1#tag';
  2. print_r(parse_url($url));
  3. echo parse_url($url, PHP_URL_SCHEME).PHP_EOL;
  4. echo parse_url($url, PHP_URL_HOST).PHP_EOL;
  5. echo parse_url($url, PHP_URL_PORT).PHP_EOL;
  6. echo parse_url($url, PHP_URL_USER).PHP_EOL;
  7. echo parse_url($url, PHP_URL_PASS).PHP_EOL;
  8. echo parse_url($url, PHP_URL_PATH).PHP_EOL;
  9. echo parse_url($url, PHP_URL_QUERY).PHP_EOL;
  10. echo parse_url($url, PHP_URL_FRAGMENT).PHP_EOL;
  11. ?>
复制代码

输出:

  1. Array
  2. (
  3. [scheme] => http
  4. [host] => www.fdipzone.com
  5. [port] => 80
  6. [user] => fdipzone
  7. [pass] => 123456
  8. [path] => /test/index.php
  9. [query] => id=1
  10. [fragment] => tag
  11. )
  12. http
  13. www.fdipzone.com
  14. 80
  15. fdipzone
  16. 123456
  17. /test/index.php
  18. id=1
  19. tag
复制代码
3.parse_str

parse_str 将字符串解析成多个变量

  1. void parse_str ( string $str [, array &$arr ] )
复制代码

如果 str 是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域。


参数:
str
输入的字符串

arr
如果设置了第二个变量arr,变量将会以数组元素的形式存入到这个数组,作为替代。


例子1:解析到当前作用域

  1. $str = 'name=fdipzone&gender=male&profession=programer&explain=a new programmer';
  2. parse_str($str);
  3. echo $name.PHP_EOL;
  4. echo $gender.PHP_EOL;
  5. echo $profession.PHP_EOL;
  6. echo $explain.PHP_EOL;
  7. ?>
复制代码

输出:

  1. fdipzone
  2. male
  3. programer
  4. a new programmer
复制代码



例子2:结果保存到arr数组

  1. $str = 'name=fdipzone&gender=male&profession=programer&explain=a new programmer';
  2. parse_str($str, $arr);
  3. print_r($arr);
  4. ?>
复制代码

输出:

  1. Array
  2. (
  3. [name] => fdipzone
  4. [gender] => male
  5. [profession] => programer
  6. [explain] => a new programmer
  7. )
复制代码
4.获取url的query参数并解析

首先使用parse_url获取query,然后在使用parse_str解析参数

  1. $url = 'http://www.fdipzone.com/test/index.php?name=fdipzone&gender=male&profession=programmer&explain=a new programmer';
  2. $query = parse_url($url, PHP_URL_QUERY);
  3. parse_str($query, $data);
  4. print_r($data);
  5. ?>
复制代码

输出:

  1. Array
  2. (
  3. [name] => fdipzone
  4. [gender] => male
  5. [profession] => programmer
  6. [explain] => a new programmer
  7. )
复制代码
php, http


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在Laravel中使用Flash会话数据在Laravel中使用Flash会话数据Mar 12, 2025 pm 05:08 PM

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

php中的卷曲:如何在REST API中使用PHP卷曲扩展php中的卷曲:如何在REST API中使用PHP卷曲扩展Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

简化的HTTP响应在Laravel测试中模拟了简化的HTTP响应在Laravel测试中模拟了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

PHP记录:PHP日志分析的最佳实践PHP记录:PHP日志分析的最佳实践Mar 10, 2025 pm 02:32 PM

PHP日志记录对于监视和调试Web应用程序以及捕获关键事件,错误和运行时行为至关重要。它为系统性能提供了宝贵的见解,有助于识别问题并支持更快的故障排除

在Codecanyon上的12个最佳PHP聊天脚本在Codecanyon上的12个最佳PHP聊天脚本Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

解释PHP中晚期静态结合的概念。解释PHP中晚期静态结合的概念。Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

自定义/扩展框架:如何添加自定义功能。自定义/扩展框架:如何添加自定义功能。Mar 28, 2025 pm 05:12 PM

本文讨论了将自定义功能添加到框架上,专注于理解体系结构,识别扩展点以及集成和调试的最佳实践。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能