0

0

参数格式化读取

php中文网

php中文网

发布时间:2016-07-25 08:47:21

|

1116人浏览过

|

来源于php中文网

原创

作为一名phper,今天才发现,从加入osc到现在,分享的各种代码,就只有一篇php.顿觉脸红,特分享在项目中自己写的一个常用类.

GET数据/POST数据/普通数组 通过key返回格式化后的数据
http://www.du52.com/text.php?id=581
  1. include_once('Param.class.php');
  2. // 模拟设置GET/POST数据
  3. $_REQUEST['int'] = '1241243';
  4. $_REQUEST['str'] = 'hello';
  5. $_REQUEST['bool'] = 'true';
  6. $_REQUEST['arr'] = '1,2,3,4';
  7. $_REQUEST['json'] = json_encode(array('a' => 'a', 'b' => 'b'));
  8. $_REQUEST['date'] = date('Y-m-d H:i:s');
  9. // 单个数据读取
  10. var_dump(Param::getInt('int', 0));echo '
    ';
  11. var_dump(Param::getInt('undefined-int', -1));echo '
    ';
  12. var_dump(Param::getStr('str', 'default'));echo '
    ';
  13. var_dump(Param::getBool('bool', NULL));echo '
    ';
  14. var_dump(Param::getStrArray('arr', ',', NULL));echo '
    ';
  15. var_dump(Param::getJson('json', NULL));echo '
    ';
  16. var_dump(Param::getTime('date', -1));echo '
    ';
  17. echo '
    ';echo '
    ';
  18. // 批量获取
  19. $fields = array();
  20. $fields[] = array('int', Param::$FIELD_TYPE_INT, 0);
  21. $fields[] = array('undefined-int', Param::$FIELD_TYPE_INT, -1);
  22. $fields[] = array('str', Param::$FIELD_TYPE_STR, 'default');
  23. $fields[] = array('bool', Param::$FIELD_TYPE_BOOL, 0);
  24. $fields[] = array('arr', Param::$FIELD_TYPE_STRARR, 0);
  25. $fields[] = array('json', Param::$FIELD_TYPE_JSON, 0);
  26. $fields[] = array('date', Param::$FIELD_TYPE_TIME, -1);
  27. $data = Param::parse($fields);
  28. var_dump($data);
  29. echo '
    ';echo '
    ';
  30. // 获取数组数据
  31. $source = array('int' => '1234', 'str' => 'hello');
  32. var_dump(Param::getInt('int', -1));echo '
    ';
  33. var_dump(Param::getStr('str', 'default'));echo '
    ';
  34. ?>
复制代码
  1. int(1241243)
  2. int(-1)
  3. string(5) "hello"
  4. bool(true)
  5. array(4) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" }
  6. array(2) { ["a"]=> string(1) "a" ["b"]=> string(1) "b" }
  7. int(1408603747)
  8. array(7) { ["int"]=> int(1241243) ["undefined-int"]=> int(-1) ["str"]=> string(5) "hello" ["bool"]=> bool(true) ["arr"]=> array(4) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" } ["json"]=> array(2) { ["a"]=> string(1) "a" ["b"]=> string(1) "b" } ["date"]=> int(1408603747) }
  9. int(1241243)
  10. string(5) "hello"
复制代码
  1. /**
  2. * 参数管理
  3. *
  4. * @author wangaibo168@163.com
  5. * @charset utf-8
  6. */
  7. class Param {
  8. /**
  9. * 默认构造函数
  10. */
  11. private function __construct(){}
  12. /**
  13. * 获取原生数据
  14. * @param $name
  15. * @param null $def
  16. * @param null $arr
  17. * @return null
  18. */
  19. public static function getData($name,$def=null,$arr=null){
  20. if(is_null($name) || $name==='') return $def;
  21. $name = trim($name);
  22. $temp = is_array($arr)?$arr:$_REQUEST;
  23. if(array_key_exists($name,$temp)) return $temp[$name];
  24. return $def;
  25. }
  26. /**
  27. * 获取字符串数据
  28. * @param $name
  29. * @param string $def
  30. * @param null $arr
  31. * @return string
  32. */
  33. public static function getStr($name,$def='',$arr=null){
  34. $value = self::getData($name,$def,$arr);
  35. return @strval($value);
  36. }
  37. /**
  38. * 获取数值数据
  39. * @param $name
  40. * @param int $def
  41. * @param null $arr
  42. * @return int
  43. */
  44. public static function getInt($name,$def=0,$arr=null){
  45. $value = self::getData($name,$def,$arr);
  46. return @intval($value);
  47. }
  48. /**
  49. * 获取布尔类型数据
  50. * @param $name
  51. * @param bool $def
  52. * @param null $arr
  53. * @return bool
  54. */
  55. public static function getBool($name,$def=false,$arr=null){
  56. $value = self::getData($name,$def,$arr);
  57. if(is_string($value)){
  58. $value = strtolower($value);
  59. if($value=='true' || $value=='1') return true;
  60. if($value=='false' || $value=='0') return false;
  61. }
  62. if(is_int($value)){
  63. if($value==1) return true;
  64. if($value==0) return false;
  65. }
  66. if(is_object($value)){
  67. return $value!=null;
  68. }
  69. return $def;
  70. }
  71. /**
  72. * 获取数组类型数据
  73. * @param $name
  74. * @param array $def
  75. * @param null $arr
  76. * @return array
  77. */
  78. public static function getArray($name,$def=array(),$arr=null){
  79. $value = self::getData($name,$def,$arr);
  80. if(!is_array($value)){
  81. $value = array($value);
  82. }
  83. return $value;
  84. }
  85. /**
  86. * 获取JSON类型数据
  87. * @param $name
  88. * @param array $def
  89. * @param null $arr
  90. * @return array
  91. */
  92. public static function getJson($name,$def=array(),$arr=null){
  93. $value = self::getStr($name,null,$arr);
  94. if($value==null) return $def;
  95. $value = @json_decode($value,true);
  96. if(is_array($value) && count($value)>0) return $value;
  97. return $def;
  98. }
  99. /**
  100. * 时间格式为2013-12-02 11:00:11,转换为时间戳
  101. * @param $name
  102. * @param int $def
  103. * @param null $arr
  104. * @return int
  105. */
  106. public static function getTime($name,$def=0,$arr=null){
  107. $value = self::getStr($name,'',$arr);
  108. if(empty($value)) return $def;
  109. $value = trim($value);
  110. if(preg_match('/^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})\s+([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})$/',$value,$ret)){
  111. if(is_array($ret) && count($ret)==7){
  112. list($t,$y,$m,$d,$h,$mi,$s) = $ret;
  113. return mktime($h,$mi,$s,$m,$d,$y);
  114. }else{
  115. return $def;
  116. }
  117. }
  118. if(preg_match('/^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$/',$value,$ret)){
  119. if(is_array($ret) && count($ret)==4){
  120. list($t,$y,$m,$d) = $ret;
  121. return mktime(0,0,0,$m,$d,$y);
  122. }else{
  123. return $def;
  124. }
  125. }
  126. return $def;
  127. }
  128. /**
  129. * 时间格式为2013-12-02 11:00:11,转换为数字(14位)
  130. * @param $name
  131. * @param string $def
  132. * @param null $arr
  133. * @return bool|string
  134. */
  135. public static function getDate($name,$def='00000000000000',$arr=null){
  136. $value = self::getTime($name,0,$arr);
  137. if($value>0){
  138. return date('YmdHis',$value);
  139. }
  140. return $def;
  141. }
  142. /**
  143. * 格式化字符串日期为标准日期
  144. * @param $value
  145. * @param bool $full
  146. * @param string $def
  147. * @return string
  148. */
  149. public static function formatDate($value,$full=false,$def=''){
  150. if(empty($value)) return $def;
  151. $value = trim($value);
  152. if(preg_match('/^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$/',$value,$ret)){
  153. if(is_array($ret) && count($ret)==7){
  154. list($t,$y,$m,$d,$h,$mi,$s) = $ret;
  155. if($y==0 || $m==0 || $d==0) return $def;
  156. if(!$full && $h==0 && $mi==0 && $s==0){
  157. return "$y-$m-$d";
  158. }
  159. return "$y-$m-$d $h:$mi:$s";
  160. }else{
  161. return $def;
  162. }
  163. }
  164. }
  165. /**
  166. * 获取浮点数据
  167. * @param $name
  168. * @param int $def
  169. * @param null $arr
  170. * @return float
  171. */
  172. public static function getDouble($name,$def=0,$arr=null){
  173. $value = self::getData($name,$def,$arr);
  174. return @doubleval($value);
  175. }
  176. /**
  177. * 获取并将字符串转换为数组
  178. * @param $name
  179. * @param string $limit
  180. * @param array $def
  181. * @param null $arr
  182. * @return array
  183. */
  184. public static function getStrArray($name,$limit=',',$def=array(),$arr=null){
  185. $value = self::getStr($name,'',$arr);
  186. if(empty($value)) return $def;
  187. $arr = explode($limit,$value);
  188. if(!is_array($arr)) return $def;
  189. $value = array();
  190. foreach($arr as $v){
  191. if(empty($v)) continue;
  192. $value[] = $v;
  193. }
  194. return $value;
  195. }
  196. /**
  197. * 设置原生数据
  198. * @param $name
  199. * @param $value
  200. */
  201. public static function setData($name,$value){
  202. if(empty($name)) return;
  203. $_GET[$name] = $value;
  204. $_POST[$name] = $value;
  205. $_REQUEST[$name] = $value;
  206. }
  207. /**
  208. * 根据旧的数据设置新的原生数据
  209. * @param $name
  210. * @param $oldName
  211. */
  212. public static function setDataByName($name,$oldName){
  213. if(empty($name) || empty($oldName)) return;
  214. $value = self::getData($oldName);
  215. self::setData($name,$value);
  216. }
  217. /**
  218. * @var string 原生数据类型
  219. */
  220. public static $FIELD_TYPE_DATA = 'data';
  221. /**
  222. * @var string 数值数据类型
  223. */
  224. public static $FIELD_TYPE_INT = 'int';
  225. /**
  226. * @var string 字符串数据类型
  227. */
  228. public static $FIELD_TYPE_STR = 'str';
  229. /**
  230. * @var string 浮点数据类型
  231. */
  232. public static $FIELD_TYPE_DOUBLE = 'double';
  233. /**
  234. * @var string 布尔数据类型
  235. */
  236. public static $FIELD_TYPE_BOOL = 'bool';
  237. /**
  238. * @var string JSON数据类型
  239. */
  240. public static $FIELD_TYPE_JSON = 'json';
  241. /**
  242. * @var string 数组数据类型
  243. */
  244. public static $FIELD_TYPE_ARRAY = 'array';
  245. /**
  246. * @var string 时间戳数据类型
  247. */
  248. public static $FIELD_TYPE_TIME = 'time';
  249. /**
  250. * @var string 字符串时间数据类型
  251. */
  252. public static $FIELD_TYPE_DATE = 'date';
  253. /**
  254. * @var string 字符串数组数据类型
  255. */
  256. public static $FIELD_TYPE_STRARR = 'strarr';
  257. /**
  258. * 根据数据字段格式化数据
  259. * @param $fields
  260. * @return array
  261. */
  262. public static function parse($fields){
  263. if(!is_array($fields) || count($fields)==0) return array();
  264. $data = array();
  265. foreach($fields as $field){
  266. if(!is_array($field) || count($field)!=3) continue;
  267. list($name,$type,$def) = $field;
  268. if(empty($name) || empty($type)) continue;
  269. $type = strtolower($type);
  270. if($type==self::$FIELD_TYPE_DATA){
  271. $value = self::getData($name,$def);
  272. }else if($type==self::$FIELD_TYPE_INT){
  273. $value = self::getInt($name,$def);
  274. }else if($type==self::$FIELD_TYPE_STR){
  275. $value = self::getStr($name,$def);
  276. }else if($type==self::$FIELD_TYPE_DOUBLE){
  277. $value = self::getDouble($name,$def);
  278. }else if($type==self::$FIELD_TYPE_BOOL){
  279. $value = self::getBool($name,$def);
  280. }else if($type==self::$FIELD_TYPE_ARRAY){
  281. $value = self::getArray($name,$def);
  282. }else if($type==self::$FIELD_TYPE_TIME){
  283. $value = self::getTime($name,$def);
  284. }else if($type==self::$FIELD_TYPE_DATE){
  285. $value = self::getDate($name,$def);
  286. }else if($type==self::$FIELD_TYPE_JSON){
  287. $value = self::getJson($name,$def);
  288. }else if($type==self::$FIELD_TYPE_STRARR){
  289. $value = self::getStrArray($name,',',$def);
  290. }else{
  291. $value = $def;
  292. }
  293. $data[$name] = $value;
  294. }
  295. return $data;
  296. }
  297. /**
  298. * 格式化JSON数据
  299. * @param $name
  300. * @param $fields
  301. * @param null $arr
  302. * @return array
  303. */
  304. public static function parseJSON($name,$fields,$arr=null){
  305. if(!is_array($fields) || count($fields)==0) return array();
  306. $data = array();
  307. $temp = self::getJson($name,null,$arr);
  308. if(!is_array($temp)) $temp = array();
  309. foreach($fields as $field){
  310. if(!is_array($field) || count($field)!=3) continue;
  311. list($name,$type,$def) = $field;
  312. if(empty($name) || empty($type)) continue;
  313. $type = strtolower($type);
  314. if($type==self::$FIELD_TYPE_DATA){
  315. $value = self::getData($name,$def,$temp);
  316. }else if($type==self::$FIELD_TYPE_INT){
  317. $value = self::getInt($name,$def,$temp);
  318. }else if($type==self::$FIELD_TYPE_STR){
  319. $value = self::getStr($name,$def,$temp);
  320. }else if($type==self::$FIELD_TYPE_DOUBLE){
  321. $value = self::getDouble($name,$def,$temp);
  322. }else if($type==self::$FIELD_TYPE_BOOL){
  323. $value = self::getBool($name,$def,$temp);
  324. }else if($type==self::$FIELD_TYPE_ARRAY){
  325. $value = self::getArray($name,$def,$temp);
  326. }else if($type==self::$FIELD_TYPE_TIME){
  327. $value = self::getTime($name,$def,$temp);
  328. }else if($type==self::$FIELD_TYPE_DATE){
  329. $value = self::getDate($name,$def,$temp);
  330. }else if($type==self::$FIELD_TYPE_JSON){
  331. $value = self::getJson($name,$def,$temp);
  332. }else if($type==self::$FIELD_TYPE_STRARR){
  333. $value = self::getStrArray($name,',',$def,$temp);
  334. }else{
  335. $value = $def;
  336. }
  337. $data[$name] = $value;
  338. }
  339. return $data;
  340. }
  341. }
  342. ?>
复制代码


热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

1

2026.02.24

Golang 性能优化专题:提升应用效率
Golang 性能优化专题:提升应用效率

《Golang 性能优化专题》聚焦 Go 应用在高并发与大规模服务中的性能问题,从 profiling、内存分配、Goroutine 调度、GC 机制到 I/O 与锁竞争逐层分析。结合真实案例讲解定位瓶颈的方法与优化策略,帮助开发者建立系统化性能调优思维,在保证代码可维护性的同时显著提升服务吞吐与稳定性。

2

2026.02.24

Golang 面试题精选:高频问题与解答
Golang 面试题精选:高频问题与解答

Golang 面试题精选》系统整理企业常见 Go 技术面试问题,覆盖语言基础、并发模型、内存与调度机制、网络编程、工程实践与性能优化等核心知识点。每道题不仅给出答案,还拆解背后的设计原理与考察思路,帮助读者建立完整知识结构,在面试与实际开发中都能更从容应对复杂问题。

1

2026.02.24

Golang 运行与部署实战:从本地到云端
Golang 运行与部署实战:从本地到云端

《Golang 运行与部署实战》围绕 Go 应用从开发完成到稳定上线的完整流程展开,系统讲解编译构建、环境配置、日志与配置管理、容器化部署以及常见运维问题处理。结合真实项目场景,拆解自动化构建与持续部署思路,帮助开发者建立可靠的发布流程,提升服务稳定性与可维护性。

3

2026.02.24

Golang 疑难杂症解决指南:常见问题排查与优化
Golang 疑难杂症解决指南:常见问题排查与优化

《Golang 疑难杂症解决指南》聚焦开发过程中常见却棘手的问题,从并发模型、内存管理、性能瓶颈到工程化实践逐步拆解。通过真实案例与调试思路,帮助开发者定位问题根因,建立系统化排查方法。不只给出答案,更强调分析路径与工具使用,让你在复杂 Go 项目中具备持续解决问题的能力。

1

2026.02.24

Golang 入门学习路线:从零基础到上手开发
Golang 入门学习路线:从零基础到上手开发

Golang 入门路线涵盖从零到上手的核心路径:首先打牢基础语法与切片等底层机制;随后攻克 Go 的灵魂——接口设计与 Goroutine 并发模型;接着通过 Gin 框架与 GORM 深入 Web 开发实战;最后在微服务与云原生工具开发中进阶,旨在培养具备高性能并发处理能力的后端工程师。

0

2026.02.24

中国研究生招生信息网官方网站入口 研招网网页版在线入口
中国研究生招生信息网官方网站入口 研招网网页版在线入口

中国研究生招生信息网入口(https://yz.chsi.com.cn) 此网站是研究生报名入口的唯一官方网站

95

2026.02.24

苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法
苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法

本专题汇总苹果官网最新可用入口及中国站点访问方式,涵盖官网直达链接、iPhone官方页面查看方法与常见访问说明,帮助用户快速进入苹果官方网站,便捷了解产品信息与官方服务。

14

2026.02.24

Asianfanfics官网入口与访问指南_AFF官方平台最新登录地址
Asianfanfics官网入口与访问指南_AFF官方平台最新登录地址

本专题系统整理Asianfanfics(AFF)官方网站最新可用入口,涵盖官方平台最新直达地址、官网登录方式及中文访问指引,帮助用户快速、安全地进入AFF平台浏览与使用相关内容。

15

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号