1. // 驼峰转下划线
  2. function humpToUnderline($str){
  3. if(empty($str)){
  4. return "";
  5. }
  6. $arr = str_split($str);
  7. $temp = "";
  8. foreach($arr as $key => $val){
  9. $ascii = ord($val);
  10. if( $ascii >= 65 && $ascii <= 90 ){
  11. if($key == 0){
  12. $temp .= chr($ascii+(97-65));
  13. }else{
  14. $temp .= "_".chr($ascii+(97-65));
  15. }
  16. }else if( $ascii >= 97 && $ascii <= 122 ){
  17. $temp .= chr($ascii);
  18. }else{
  19. $temp .= "";
  20. }
  21. }
  22. return $temp;
  23. }
  24. // 下划线转驼峰
  25. function underlineToHump($str){
  26. if(empty($str)){
  27. return "";
  28. }
  29. $arr = explode("_", $str);
  30. foreach($arr as $key => $val){
  31. $arr[$key] = ucfirst( strtolower($val) );
  32. }
  33. return implode("",$arr);
  34. // return implode("",array_map('ucfirst',array_map('strtolower',explode("_", $str))));
  35. }
  36.  
  37. // ASCII A - 65
  38. // ASCII Z - 90
  39. // ASCII a - 97
  40. // ASCII z - 122
  41. $str = "ABC";
  42. echo humpToUnderline($str);
  43. echo "<br>";
  44. $str = "a_b_____c";
  45. echo underlineToHump($str);
  46. exit;
  47. preg_match_all("/([A-Z]{1}).*[A-Z]*/", $str, $matches);
  48.  
  49. // foreach($matches[1] as $key => $val){
  50. // echo strpos($str,$val)."/";
  51. // }
  52.  
  53. var_dump($matches);
  54. // $str = "AaBbCc";
  55. // preg_match_all("/([A-Z]{1})(.)/", $str, $matches);
  56. // $matches[0] 匹配全体字符串
  57. // $matches[1] 匹配第一个括号里面字符串
  58. // $matches[2] 匹配第二个括号里面字符串
  59. if(count($matches[1]) > 0){
  60. $res = array_map(function($v){
  61. return "_".strtolower($v);
  62. }, $matches[0]);
  63. }
  64. $res = ltrim( implode("", $res),"_" );
  65. var_dump($res);
  66.  
  67. // $str = preg_replace('/([A-Z]{1})/',"strtoupper('$1')",$str);

详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别

实例:

1,http://localhost/aaa/ (打开aaa中的index.php)
结果:
$_SERVER['QUERY_STRING'] = "";
$_SERVER['REQUEST_URI']  = "/aaa/";
$_SERVER['SCRIPT_NAME']  = "/aaa/index.php";
$_SERVER['PHP_SELF']     = "/aaa/index.php";

2,http://localhost/aaa/?p=222 (附带查询)
结果:
$_SERVER['QUERY_STRING'] = "p=222";
$_SERVER['REQUEST_URI']  = "/aaa/?p=222";
$_SERVER['SCRIPT_NAME']  = "/aaa/index.php";
$_SERVER['PHP_SELF']     = "/aaa/index.php";

3,http://localhost/aaa/index.php?p=222&q=333
结果:
$_SERVER['QUERY_STRING'] = "p=222&q=333";
$_SERVER['REQUEST_URI']  = "/aaa/index.php?p=222&q=333";
$_SERVER['SCRIPT_NAME']  = "/aaa/index.php";
$_SERVER['PHP_SELF']     = "/aaa/index.php";

由实例可知:
$_SERVER["QUERY_STRING"]  获取查询 语句,实例中可知,获取的是?后面的值
$_SERVER["REQUEST_URI"]   获取 http://localhost 后面的值,包括/
$_SERVER["SCRIPT_NAME"]   获取当前脚本的路径,如:index.php
$_SERVER["PHP_SELF"]      当前正在执行脚本的文件名

PHP 测试杂项的更多相关文章

  1. 杂项之使用qq邮箱发送邮件

    杂项之使用qq邮箱发送邮件 本节内容 特殊设置 测试代码 1. 特殊设置 之前QQ邮箱直接可以通过smtp协议发送邮件,不需要进行一些特殊的设置,但是最近使用QQ邮箱测试的时候发现以前使用的办法无法奏 ...

  2. 杂项之图像处理pillow

    杂项之图像处理pillow 本节内容 参考文献 生成验证码源码 一些小例子 1. 参考文献 http://pillow-cn.readthedocs.io/zh_CN/latest/ pillow中文 ...

  3. Python渗透测试工具合集

    摘自:http://www.freebuf.com/tools/94777.html 如果你热爱漏洞研究.逆向工程或者渗透测试,我强烈推荐你使用 Python 作为编程语言.它包含大量实用的库和工具, ...

  4. ARM指令集----杂项指令

    ARM指令集可以分为6类,即是跳转指令,数据处理指令,程序状态传输指令,Load.Store指令,协处理器指令和异常中断指令 跳转指令: 在ARM中有两种方式可以实现程序的跳转,一种是跳转指令,另一种 ...

  5. BootStrap入门教程 (三) :可重用组件(按钮,导航,标签,徽章,排版,缩略图,提醒,进度条,杂项)

    上讲回顾:Bootstrap的基础CSS(Base CSS)提供了优雅,一致的多种基础Html页面要素,包括排版,表格,表单,按钮等,能够满足前端工程师的基本要素需求. Bootstrap作为完整的前 ...

  6. 第二篇:杂项之图像处理pillow

    杂项之图像处理pillow   杂项之图像处理pillow 本节内容 参考文献 生成验证码源码 一些小例子 1. 参考文献 http://pillow-cn.readthedocs.io/zh_CN/ ...

  7. iperf 测试工具

    Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性. Iperf可以报告带宽,延迟抖动和数据包丢失.利用Iperf这 ...

  8. Python测试 ——开发工具库

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  9. python渗透测试工具集合

    作者:一起学习Python 原文链接:https://zhuanlan.zhihu.com/p/21803985 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 在进行漏洞研究. ...

随机推荐

  1. Math.ceil()、Math.floor()和Math.round()

    下面来介绍将小数值舍入为整数的几个方法:Math.ceil().Math.floor()和Math.round(). 这三个方法分别遵循下列舍入规则: Math.ceil()执行向上舍入,即它总是将数 ...

  2. mui---自定义页面打开的方向

    在使用MUI做APP的时候,会考虑对页面的打开方向做规定,MUI也给我们提供了很多种页面的打开方式. 具体参考: http://ask.dcloud.net.cn/question/174 MUI做A ...

  3. 5.STM32通用定时器TIM3中断

    1.通用定时器TIM3中断 #include "timer.h" #include "led.h" void TIM3_Int_Init(u16 arr,u16 ...

  4. node.js 设置脚本命令

    yargs模块 https://www.npmjs.com/package/yargs https://github.com/yargs/yargs/blob/HEAD/docs/api.md con ...

  5. 拓展 NLog 优雅的输送日志到 Logstash

    在上上篇博客通过对aspnetcore启动前配置做了一些更改,以及对nlog进行了自定义字段,可以把请求记录输送到mysql,正式情况可能不会这么部署.因为近期也在学习elk,所以就打算做一个实例,结 ...

  6. LIBXML2库使用指南2

    3. 简单xml操作例子 http://blog.sina.com.cn/s/blog_4673bfa50100b0xj.html 了解以上基本知识之后,就可以进行一些简单的xml操作了.当然,还没有 ...

  7. [No0000162]如何不靠运气致富|来自硅谷著名天使投资人的40条致富经

    1. Seek wealth, not money or status. Wealth is having assets that earn while you sleep. Money is how ...

  8. [No0000113]Keyboard shortcuts for Windows Visual Studio Code

    General 常用Ctrl+Shift+P, F1 Show Command Palette 显示命令行Ctrl+P Quick Open, Go to File… 快速打开Ctrl+Shift+N ...

  9. arcengine直连sde

    搞了半天,找了好多资料,实验好多次,终于解决.参考资料:http://www.cnblogs.com/gaxin/p/5777864.html

  10. prometheus: celery, redis-export

    https://github.com/nlighten/tomcat_exporter https://github.com/prometheus/jmx_exporter https://vexxh ...