简单方便使用:
/**
* 将多维数组转为一维数组
* @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. SDL实践:产品经理如何驱动产品安全建设

    一.序言 本文从产品经理的角度出发,对产品经理的安全职责.产品驱动安全的内涵.工作内容.工作方法.所需安全资源.以及产品经理的安全工作量进行了分析.希望所有产品经理在没有心理负担的情况下,有目标.有方 ...

  2. Android自定义的弹窗

    package com.microduino.qoobot.view; import android.app.Activity; import android.app.Dialog; import a ...

  3. Git上传代码命令

    对于Git在这不做说明:只介绍Git使用过程中的常用命令: 一.创建仓库,提交文件 1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: 第一步,使用命令git a ...

  4. 【按位dp】文盲的学习方法

    当年大神的文章 <浅谈数位统计问题> 对于没什么文化(x 没有充分时间或懒得看那么多理论 应付个水考试的我 eg:62问题 某大大的代码和分析 #include <iostream& ...

  5. this, 闭包,箭头函数

    闭包写法 //后台每个执行环境都有一个表示变量的对象---变量对象 //例如compare()函数调用 //compare的执行环境而言,其作用域链包含两个变量对象 本地活动对象 全局活动对象 全局变 ...

  6. rabbitmq参考文档

    英文文档:http://www.rabbitmq.com/getstarted.html 中文文档:http://rabbitmq.mr-ping.com/ rabbitmq重启,消费者恢复,解决消费 ...

  7. 论文翻译——Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank

    Abstract Semantic word spaces have been very useful but cannot express the meaning of longer phrases ...

  8. 元组(tuple)的用途(基础)

    >>>a = 123,456,'jia',['jia','xiang'] >>>a (123, 456, 'jia', ['jia', 'xiang']) 这个带括 ...

  9. Opencv笔记(十六)——认识轮廓

    什么是轮廓? 轮廓可以简单认为成连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.轮廓在形状分析和物体的检测和识别中很有用.谈起轮廓不免想到边缘,它们确实很像.简单的说,轮廓是连续的,边缘并 ...

  10. BOM(Broswer Object Model)

    BOM(Broswer Object Model) 方法:    框窗     1.警告框    window.alert("msg");     2.确认框     window ...