* 获取 post 或者 get 的值

* @param string $k

* @param string $default 默认返回值

* @return Ambigous NULL, unknown

*/

function v($k, $defalut = ”) {

return isset($_REQUEST[$k]) ? $_REQUEST[$k] : $defalut;

}

/**

* 获取 get 的值

* @param string $k

* @param string $default 默认返回值

* @return Ambigous NULL, unknown

*/

function get($k, $defalut = ”) {

return isset($_GET[$k]) ? $_GET[$k] : $defalut;

}

/**

* 获取 post 的值

* @param string $k

* @param string $default 默认返回值

* @return Ambigous NULL, unknown

*/

function post($k, $defalut = ”) {

return isset($_POST[$k]) ? $_POST[$k] : $defalut;

}

/**

* 模拟简单的 post 请求

* @param  string $url

* @param  string $data 类型和 QUERY_STRING 相同,即由 & 连接的字符串 a=1&b=2

* @param  array  $header header数组

* @return all    返回服务器返回的结果

*/

function post_data($url, $data = array(), $header = array()) {

$ch = curl_init($url);

ob_start();

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_exec($ch);

$output = ob_get_contents();

ob_clean();

curl_close($ch);

return $output;

}

/**

* 将未知编码的字符串转换为期望的编码(配置文件中设置的编码)

*

* 不建议使用,尽量统一编码,明确要转码的字符原来的编码

* @deprecated

* @param string $str

* @param string $toEncoding

* @return string

*/

function convert_str($str, $toEncoding = null) {

//加此字符集列表数组,解决误将 改变 2312 识别为 utf-8 的情况

$charset_list = array(

‘ascii’,

‘gb2312′,

‘gbk’,

‘utf-8′

);

$strEncoding  = mb_detect_encoding($str, $charset_list);

//如果没有提供要转码的类型,使用系统设置的编码

if (!$toEncoding)

$toEncoding = CHARSET;

if (strtolower($strEncoding) != strtolower($toEncoding)) {

$str = iconv($strEncoding, $toEncoding, $str);

}

return $str;

}

/**

* 查看字符长度

* @param unknown_type $str

*/

function real_strlen($str) {

$charset = mb_detect_encoding($str);

return mb_strlen($str, $charset);

}

/**

* 获得服务器端网址,即获取当前网址

* @param boolean $with_query_string 是否附带 query_string 部分

* @return Ambigous string, unknown

*/

function get_server_url($with_query_string = true) {

$url = ‘http://localhost’;

if (isset($_SERVER['HTTP_HOST'])) {

$url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== ‘off’ ? ‘https’ : ‘http’;

$url .= ‘://’ . $_SERVER['HTTP_HOST'];

if ($with_query_string) {

$url .= $_SERVER['REQUEST_URI'];

} else {

$url .= $_SERVER['SCRIPT_NAME'];

}

}

return $url;

}

/**

* 获取网址跟目录

* @return string

*/

function get_server_root() {

$url = ‘http://localhost’;

if (isset($_SERVER['HTTP_HOST'])) {

$url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== ‘off’ ? ‘https’ : ‘http’;

$url .= ‘://’ . $_SERVER['HTTP_HOST'];

$url .= dirname($_SERVER['SCRIPT_NAME']);

}

$url = rtrim($url, ‘/’) . ‘/’;

return $url;

}

/**

* 获取客户端 IP

*/

function get_ip() {

if (isset($_SERVER["HTTP_X_REAL_IP"])) {

$ip = $_SERVER["HTTP_X_REAL_IP"];

} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {

$ip = $_SERVER["HTTP_CLIENT_IP"];

} else if (isset($_SERVER["REMOTE_ADDR"])) {

$ip = $_SERVER["REMOTE_ADDR"];

} else {

$ip = “0.0.0.0″;

}

return $ip;

}

/**

* 判断 ip 是否合法(仅限于IPV4)

* @param unknown_type $ip

*/

function is_valid_ip($ip) {

$preg       = ‘/^(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])$/’;

$is_matched = false;

if (preg_match($preg, $ip, $m)) {

$is_matched = true;

}

return $is_matched;

}

/**

* json 编码

*

* 解决 json_encode() 不支持中文的情况

*

* @param array|object $data

* @return array|object

*/

function ch_json_encode($data) {

/**

* 将中文编码

* @param array $data

* @return string

*/

function ch_urlencode($data) {

if (is_array($data) || is_object($data)) {

foreach ($data as $k = $v) {

if (is_scalar($v)) {

if (is_array($data)) {

$data[$k] = urlencode($v);

} else if (is_object($data)) {

$data-$k = urlencode($v);

}

} else if (is_array($data)) {

$data[$k] = ch_urlencode($v); //递归调用该函数

} else if (is_object($data)) {

$data-$k = ch_urlencode($v);

}

}

}

return $data;

}

$ret = ch_urlencode($data);

$ret = json_encode($ret);

return urldecode($ret);

}

/**

* 转义特殊字符

*

* 书写mysql语句时的可先对变量进行过滤

* 此函数会自动对字符串加引号

* @param unknown_type $value

* @return string

*/

function check_input($value) {

if (get_magic_quotes_gpc()) {

$value = stripslashes($value);

}

if (!is_numeric($value)) {

$value = “‘” . wphp_escape($value) . “‘”;

}

return $value;

}

/**

* 转义函数,用来替代 mysql*_escape_* 函数

* @param unknown_type $str

*/

function wphp_escape($str) {

$search  = array(

“\\“,

“\0“,

“\n“,

“\r“,

“\x1a“,

“‘”,

‘”‘

);

$replace = array(

“\\\\“,

“\\0″,

“\\n”,

“\\r”,

“\Z”,

“\’”,

‘\”‘

);

return str_replace($search, $replace, $str);

}

/**

* Ip 地址转为数字地址

*

* php 的 ip2long 这个函数有问题

* 133.205.0.0 == 2244804608

* @param string $ip 要转换的 ip 地址

* @return int    转换完成的数字

*/

function wphp_ip2long($ip) {

$ip_arr = explode(‘.’, $ip);

$iplong = (16777216 * intval($ip_arr[0])) + (65536 * intval($ip_arr[1])) + (256 * intval($ip_arr[2])) + intval($ip_arr[3]);

return $iplong;

}

/**

* 对字符串、对象、数组进行转码

*

* 和 iconv 参数使用方式相同

* @param string $in_charset

* @param string $out_charset

* @param array|string $data

* @return string|array

*/

function wphp_iconv($in_charset, $out_charset, $data) {

if (is_array($data) || is_object($data)) {

foreach ($data as $k = $v) {

if (is_scalar($v)) {

if (is_array($data)) {

$data[$k] = iconv($in_charset, $out_charset, $v);

} else if (is_object($data)) {

$data-$k = iconv($in_charset, $out_charset, $v);

}

} else if (is_array($data)) {

$data[$k] = wphp_iconv($in_charset, $out_charset, $v);

} else if (is_object($data)) {

$data-$k = wphp_iconv($in_charset, $out_charset, $v);

}

}

} else if (is_scalar($data)) {

$data = iconv($in_charset, $out_charset, $data);

}

return $data;

}

---------------------------------------------------------------------------------

好玩的php函数,几个实用的PHP函数相关推荐

  1. 10个不太为人所知的,但实用的PHP函数

    10个不太为人所知的,但实用的PHP函数 您的评价:       较差  收藏该经验     阅读目录 php_check_syntax highlight_string show_source ph ...

  2. java lambda函数_最常用的 Java 8 中的 Lambda 函数(项目中实用笔记)

    最常用的 Java 8 中的 Lambda 函数(项目中实用笔记) 简介 Java 8 中的新特性,虽然现在都出到了Java14版本,不过在日常的开发过程中,8的版本是足够使用了,再说现在的8以上的版 ...

  3. php常用操作数组函数,PHP自带的几个实用的数组函数

    PHP自带的几个实用的数组函数 php之所以被认为是快速开发的好工具,有一个原因就是他内置了大量的实用函数,今天我们介绍几个PHP自带的数组函数.在开发时可以使用这些函数,不仅可以提高编程的效率,还可 ...

  4. Python限制函数执行时间的实用解决方案

      大家好,我是herosunly.985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用.曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名.拥有多项发明专利.对机器学 ...

  5. oracle 计算平方,次方,一个实用的Excel函数,Power函数公式完成平方、立方及N次方运算...

    一个实用的Excel函数,Power函数公式完成平方.立方及N次方运算 今天我们来学习如何利用Excel函数,进行数据的平方.立方等数据运算.相信对于许多同学来讲,这样的数据运算一般都是用电脑计算器来 ...

  6. python函数装饰函数_Python精进-装饰器与函数对象

    本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...

  7. 自定义函数_Access中的WorkDate自定义函数

    Access专家课堂两周年庆,视频课程.培训班.企业版等5~8折优惠,->点此了解详情 在Access中使用类似EXCEL中的WorkDate函数. 在Excel中有workdate函数,在AC ...

  8. python装饰器函数-Python精进-装饰器与函数对象

    本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...

  9. python定义函数的命令_Python入门 | 定义函数

    自用复习备忘总结. 一些定义函数:一段用来封装任务的代码 封装:用一个简单的命令执行一系列步骤的方式 3. 对象python使用对象来存储数据. 构造任何类型的值都是一个对象. 所有对象都具有三个特性 ...

最新文章

  1. micro-job 0.0.2 发布,分布式任务调度框架
  2. 通过IFeatureClass 接口查询 IWorkspace, 查询通配符
  3. SAP UI5 component.js createContent
  4. logging记录日志
  5. 用计算机玩游戏最简单的方法,如何制作电脑简易命令小游戏
  6. 我的这套VuePress主题你熟悉吧
  7. flex 瀑布流 (多列样式column布局内容被截断)
  8. android:descendantFocusability用法
  9. 中国摊铺和混凝土浇筑设备市场趋势报告、技术动态创新及市场预测
  10. python基础语法、数据结构、字符编码、文件处理 练习题
  11. 资源管理器和计算机的功能基本相同吗,“资源管理器”和“计算机”的功能基本相同...
  12. [Python爬虫案例]西刺免费代理IP
  13. JS--历史搜索记录的实现
  14. Java POI实现pptpptx转换为pdf文件
  15. 推荐花椒直播服务端的 4 个开源项目
  16. idea向mysql上传中文信息乱码问号问题
  17. Java实现 蓝桥杯 历届试题 城市建设
  18. 从源码看std::weak_ptr
  19. 北京大学 计算机辅助翻译专业,【最新权威版】2019年北京大学计算机辅助翻译CAT考研经验分享...
  20. 【Godot游戏开发案例《FlappyBird》小练习 】

热门文章

  1. python怎么调用另一个文件的函数_python如何调用另一个py文件的所有函数?
  2. 机器学习第一篇:开篇
  3. SAP Fiori 的 UI 新主题 Horizon
  4. SAP 电商云 Spartacus UI 和 SmartEdit 本地测试环境
  5. Angular library 学习笔记
  6. SAP Spartacus B2B OrgUnit 和 OrgUser 的路由映射差异比较
  7. 一个讨论:SAP项目实施的顾问,需要花时间去调试代码了解技术细节吗
  8. SAP ABAP XSLT extract custom style
  9. SAP CRM WebClient UI检查当前页面是否支持Delta handling的代码
  10. SpringBoot里slf4j日志功能的默认实现