简单方便使用:
/**
* 将多维数组转为一维数组
* @param array $arr
* @return array
*/
function ArrMd2Ud($arr) {
#将数值第一元素作为容器,作地址赋值。
$ar_room = &$arr[key($arr)];
#第一容器不是数组进去转呀
if (!is_array($ar_room)) {
#转为成数组
$ar_room = array($ar_room);
}
#指针下移
next($arr);
#遍历
while (list($k, $v) = each($arr)) {
#是数组就递归深挖,不是就转成数组
$v = is_array($v) ? call_user_func(__FUNCTION__, $v) : array($v);
#递归合并
$ar_room = array_merge_recursive($ar_room, $v);
#释放当前下标的数组元素
unset($arr[$k]);
}
return $ar_room;
}
/**
* 日期转换成几分钟前
*/
public function formatTime($date) {
$timer = strtotime($date);
$diff = $_SERVER['REQUEST_TIME'] - $timer;
$day = floor($diff / 86400);
$free = $diff % 86400;
if($day > 0) {
if(15 < $day && $day <30){
return "半个月前";
}elseif(30 <= $day && $day <90){
return "1个月前";
}elseif(90 <= $day && $day <187){
return "3个月前";
}elseif(187 <= $day && $day <365){
return "半年前";
}elseif(365 <= $day){
return "1年前";
}else{
return $day."天前";
}
}else{
if($free>0){
$hour = floor($free / 3600);
$free = $free % 3600;
if($hour>0){
return $hour."小时前";
}else{
if($free>0){
$min = floor($free / 60);
$free = $free % 60;
if($min>0){
return $min."分钟前";
}else{
if($free>0){
return $free."秒前";
}else{
return '刚刚';
}
}
}else{
return '刚刚';
}
}
}else{
return '刚刚';
}
}
}
/**
* 截取长度
*/
public function getSubString($rawString,$length='100',$etc = '...',$isStripTag=true){
$rawString = str_replace('_baidu_page_break_tag_', '', $rawString);
$result = '';
if($isStripTag)
$string = html_entity_decode(trim(strip_tags($rawString)), ENT_QUOTES, 'UTF-8');
else
$string = trim($rawString);
$strlen = strlen($string);
for ($i = 0; (($i < $strlen) && ($length > 0)); $i++){
if ($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0'))
{
if ($length < 1.0){
break;
}
$result .= substr($string, $i, $number);
$length -= 1.0;
$i += $number - 1;
}else{
$result .= substr($string, $i, 1);
$length -= 0.5;
}
}
if($isStripTag)
$result = htmlspecialchars($result, ENT_QUOTES, 'UTF-8'); if ($i < $strlen){
$result .= $etc;
}
return $result;
}
/* * *************************
* 生成随机字符串,可以自己扩展 //若想唯一,只需在开头加上用户id
* $type可以为:upper(只生成大写字母),lower(只生成小写字母),number(只生成数字)
* $len为长度,定义字符串长度
* mark 2017/8/15
* ************************** */ function _random($type, $len = 0) {
$new = '';
$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; //数据池
if ($type == 'upper') {
for ($i = 0; $i < $len; $i++) {
$new .= $string[mt_rand(36, 61)];
}
return $new;
}
if ($type == 'lower') {
for ($i = 0; $i < $len; $i++) {
$new .= $string[mt_rand(10, 35)];
}
return $new;
}
if ($type == 'number') {
for ($i = 0; $i < $len; $i++) {
$new .= $string[mt_rand(0, 9)];
}
return $new;
}
}
//计算该月有几天
function getdaysInmonth($month, $year) {
$days = '';
if ($month == 1 || $month == 3 || $month == 5 || $month == 7 || $month == 8 || $month == 10 || $month == 12)
$days = 31;
else if ($month == 4 || $month == 6 || $month == 9 || $month == 11)
$days = 30;
else if ($month == 2) {
if (isLeapyear($year)) {
$days = 29;
} else {
$days = 28;
}
}
return ($days);
} //判断是否为润年
function isLeapyear($year) {
if ((($year % 4) == 0) && (($year % 100) != 0) || (($year % 400) == 0)) {
return (true);
} else {
return (false);
}
}
//生成订单15位
function auto_order($ord = 0) {
//自动生成订单号 传入参数为0 或者1 0为本地 1为线上订单
if ($ord == 0) {
$str = '00' . time() . rand(1000, 9999); //00 本地订单
} else {
$str = '99' . time() . rand(1000, 9999); //11 线上订单
}
return $str;
} //生成订单15位
function auto_new_order($ord = 0) {
srand(time());
//自动生成订单号 传入参数为0 或者1 0为本地 1为线上订单
if ($ord == 0) {
$str = '00' . time() . mt_rand(100000,999999); //00 本地订单
} else {
$str = '11' . time() . mt_rand(100000,999999); //11 线上订单
}
return $str;
}
/**
* 检测是否为UTF8编码
* @param $string 检测字符串
* @return bool
*/
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
}
//处理json字符中的特殊字符
function getJsonToArr($result,$return_array=true)
{
$tempArr = NULL;
$result = preg_replace('/([^\\\])(":)(\d{9,})(,")/i', '${1}${2}"${3}"${4}', $result); //taobao bug,number >2^32
$tempArr = json_decode($result, $return_array);
if ($tempArr == NULL) {
$patterns = array('/,+\s*\}/', '/,+\s*\]/', '/"\s+|\s+"/', '/\n|\r|\t/','/\\\/','/ss+/');
$replacements = array('}', ']', '"', ' ','',' ');
$result = preg_replace($patterns, $replacements, $result);
$tempArr = json_decode($result, $return_array);
} return $tempArr;
} //非法字符过滤函数
function has_unsafeword($str) {
$regex = "/\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\?|\[|\]|\.|\/|\;|\'|\`|\=|\\\|\|/";
return preg_replace($regex,"",$str);
} //去空格,以及字符添加斜杠
function _trim(&$value) {
Return addslashes(trim($value));
}

几个简单又实用的PHP函数的更多相关文章

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

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

  2. opencv 简单、常用的图像处理函数(2)

    opencv的项目以来配置和环境变量的配置都很简单,对于我这个没有c++基础的来说,复杂的是opencv的api和一些大部分来自国外没有翻译的资料,以及一些常见的编码问题. 资料 opencv 中文a ...

  3. vim简单的实用总结

    vim简单的实用总结 介绍vim常用的四种模式:一般模式,编辑模式,指令列命令模式与可视模式.一,一般模式   用vim filename打开文件后直接进入的就是一般模式,在这个模式下可以用hjkl移 ...

  4. 【转载】手把手教你使用Git(简单,实用)

    手把手教你使用Git(简单,实用) 标签: git 2016年04月21日 20:51:45 1328人阅读 评论(0) 收藏 举报 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. ...

  5. Newtonsoft 六个超简单又实用的特性,值得一试 【下篇】

    一:讲故事 上一篇介绍的 6 个特性从园子里的反馈来看效果不错,那这一篇就再带来 6 个特性同大家一起欣赏. 二:特性分析 1. 像弱类型语言一样解析 json 大家都知道弱类型的语言有很多,如: n ...

  6. easyDialog 简单、实用的弹出层组件

    easyDialog 简单.实用的弹出层组件 使用背景 在完成导师需求时,导师要求寻找比一个layer弹出层组件体积小得多的.最好能嵌入在进HTML代码中而非src引用的弹出层组件,在这个需求下,我找 ...

  7. 一个简单确非常实用的javascript函数

    在写js的时候,往往会碰到字符串拼接的问题,如果简单,直接使用+号连接字符串就可以了, 但是如果复杂,+用起来就非常不爽,在.net中有,Sting.Format函数,用起来还是很爽的,于是就想着js ...

  8. 一个js简单的日历显示效果的函数

    用一个函数简单的实现一个月份的日历,效果如下: 这个日历效果有高亮显示,我实现的思维比较简单. 我把上面的日历效果用表格table生成,分成两个部分. 第一个部分:就是前面的第一排,我用一行<t ...

  9. [lua]写个简单的Lua拓展-sleep函数

    这几天在做一个小项目,其中用到了一些基本的API, 例如sleep,获取当前目录等等,lua标准库中没有提供这些接口,虽然所第三方库中也都有实现,但是要用的就那么几个函数,在一个嵌入式系统中安装那么多 ...

随机推荐

  1. 第4章 ZK基本特性与基于Linux的ZK客户端命令行学习

    第4章 ZK基本特性与基于Linux的ZK客户端命令行学习 4-1 zookeeper常用命令行操作 4-2 session的基本原理与create命令的使用

  2. Java之线程通信的方法

    /** * 线程通信的例子:使用两个线程打印 1-100.线程1, 线程2 交替打印 * * 涉及到的三个方法: * wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器. * no ...

  3. 零相关|回归|相关|相关系数|回归解释相关|r判断相关性|相关系数的区间估计|数据类型|非线性回归

    零相关是什么? 零相关亦称“不相关”.相关的一种.两个变量的相关系数r=0时的相关.零相关表示两个变量非线性相关,这时两个变量可能相互独立,也可能曲线相关.对于正态变量,两个变量零相关与两个变量相互独 ...

  4. keras字符编码

    https://www.jianshu.com/p/258a21ae0390https://blog.csdn.net/apengpengpeng/article/details/80866034#- ...

  5. JVM内存结构图表展示

    1.理解的JVM内存结构  2.对于垃圾回收问题 垃圾的回收只在堆和永久区(方法区)中,因为对于线程而言,私有存储空间如栈.本地方法区.程序计数器等,会随着方法的加载完成而直接释放空间,因此不需要进行 ...

  6. Python之小作业

    文档如下: # name, age, score tom, 12, 86 Lee, 15, 99 Lucy, 11, 58 Joseph, 19, 56 第一栏为姓名(name),第二栏为年纪(age ...

  7. SQL: all 运算符 可以 表示 非空(NOT NULL)的意思吗?

    select count(all grade) from customer; SELECT COUNT(DISTINCT customer_id) FROM customer WHERE grade ...

  8. (vshadow)Volume Shadow在渗透测试中的利用

    本文根据嘶吼学习总结出文中几种方式Vshadow包含在window SDK中,由微软签名. Vshadow包括执行脚本和调用支持卷影快照管理的命令的功能,这些功能可能会被滥用于特权级的防御规避,权限持 ...

  9. 统计学中比较重要的分布及python中使用方法

    比较重要的四种分布:正态分布.卡方分布.F分布.t分布 卡方分布概率密度曲线 t分布概率密度曲线 F分布概率密度曲线 参考资料: 统计学中四个概率分布 重要抽样分布

  10. RDD(二)——创建

    RDD的创建 1)从内存中创建 从集合中创建RDD,Spark主要提供了两种函数:parallelize和makeRDD val raw: RDD[Int] = sc.parallelize(1 to ...