php使用parse_str实现查询字符串解析到变量中的方法


Posted in PHP onFebruary 17, 2017

本文实例讲述了php使用parse_str实现查询字符串解析到变量中的方法。分享给大家供大家参考,具体如下:

parse_str()函数可实现把字符串解析到变量中,这意味着实现了字符串与变量之间的一种转换机制,在与客户端数据传递的过程中,数据是通过字符串的形式传递,如GET请求,然后在服务器端通过$_GET/$_POST等全局变量实现字符串与变量的转换,如:https://3water.com/?index.php?var1=1&var2=2,请求后服务端可使用$_GET['var1']的方式获取var1=1&var2=2这一段字符串转换成变量。parse_str()函数可实现用样的功能,使用parse_str()函数解析$_SERVER['QUERY_STRING']的值,就可以直接实现字符串与变量的转换,如$var1。

一、函数原型

void parse_str ( string str [, array &arr] )

二、版本兼容

PHP 3, PHP 4, PHP 5

三、函数基础用法与实例

1. 解析字符串为变量

<?php
parse_str("var1=3water&var2=parse_str");
echo $var1.$var2;
?>

2. 解析字符串并将变量存储到数组中

<?php
parse_str("var1=3water&var2=parse_str",$array);
print_r($array);
?>

输出:

Array ( [var1] => 3water [var2] => parse_str )

说明:这种将变量存储到数组中在PHP 4.0.3 才增加

3. 解析的字符串有空格

<?php
parse_str("v ar1=3water&var 2=parse_str",$array);
print_r($array);
?>

输出:

Array ( [v_ar1] => 3water [var_2] => parse_str )

说明:直接将空格转换为下划线_

四、注意事项

1. 如果未设置 array 参数,由该函数设置的变量将覆盖已由同名变量。

2. php.ini 中的 magic_quotes_gpc 设置影响该函数的输出。如果已启用,那么在 parse_str() 解析之前,变量会被 addslashes() 转换。

3. parse_str() 函数在处理参数时存在漏洞,攻击者可以利用这个漏洞启用register_globals,从而进一步利用其他PHP脚本中的漏洞。如果仅以一个参数调用 parse_str()的话,该函数会认为该参数是通过URL传送的请求字符串那样解析所提供的字符串,但外部攻击者可以在调用 parse_str()期间发送很多请求变量来触发memory_limit请求终止。如果在调用parse_str()期间执行了请求关闭的话,则在相关webserver进程的其余生命周期期间register_globals标签会一直打开。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
基于PHP与XML的PDF文档生成技术
Oct 09 PHP
让你的网站首页自动选择语言转跳
Dec 06 PHP
PHP 简单数组排序实现代码
Aug 05 PHP
php 不使用js实现页面跳转
Feb 11 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
利用PHP生成CSV文件简单示例
Dec 21 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
php中curl和soap方式请求服务超时问题的解决
Jun 11 PHP
php实现微信公众号创建自定义菜单功能的实例代码
Jun 11 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 #PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 #PHP
PHP中单例模式与工厂模式详解
Feb 17 #PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 #PHP
PHP合并数组函数array_merge用法分析
Feb 17 #PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 #PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 #PHP
You might like
PHP文本数据库的搜索方法
2006/10/09 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
js函数调用的方式
2014/05/06 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
Python3遍历目录树实现方法
2015/05/22 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
python之django母板页面的使用
2018/07/03 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
animation和transition的区别
2020/10/12 HTML / CSS
鱼油专家:Omegavia
2016/10/10 全球购物
C语言笔试集
2012/07/24 面试题
社区消防工作实施方案
2014/03/21 职场文书
法制宣传标语
2014/06/23 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
教育见习报告范文
2014/11/03 职场文书
三潭印月的导游词
2015/02/12 职场文书
志愿者个人总结
2015/03/03 职场文书
小英雄雨来观后感
2015/06/09 职场文书
JS实现数组去重的11种方法总结
2022/04/04 Javascript
MySQL池化框架学习接池自定义
2022/07/23 MySQL