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 相关文章推荐
基于mysql的bbs设计(一)
Oct 09 PHP
PHP学习笔记之数组篇
Jun 28 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
php mysql_list_dbs()函数用法示例
Mar 29 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
CI框架实现创建自定义类库的方法
Dec 25 PHP
php的无刷新操作实现方法分析
Feb 28 PHP
php慢查询日志和错误日志使用详解
Feb 27 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/12/06 PHP
php 正则 过滤html 的超链接
2009/06/02 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
JS location几个方法小姐
2008/07/09 Javascript
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
js实现3D旋转效果
2020/08/18 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
Python中的字典与成员运算符初步探究
2015/10/13 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
Jupyter加载文件的实现方法
2020/04/14 Python
日本航空官方网站:JAL
2019/06/19 全球购物
小学生暑假感言
2014/02/06 职场文书
2014年手术室工作总结
2014/11/26 职场文书
会计岗位职责范本
2015/04/02 职场文书
工地食品安全责任书
2015/05/09 职场文书
广播体操比赛主持词
2015/06/29 职场文书
公司人力资源管理制度
2015/08/05 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS