简单方便使用:
/**
* 将多维数组转为一维数组
* @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. 编程作业2.1:Logistic regression

    题目 在这部分的练习中,你将建立一个逻辑回归模型来预测一个学生是否能进入大学.假设你是一所大学的行政管理人员,你想根据两门考试的结果,来决定每个申请人是否被录取.你有以前申请人的历史数据,可以将其用作 ...

  2. Linux 下载安装

    安装教程:https://www.runoob.com/linux/linux-install.html Linux图形界面与命令行界面切换https://blog.csdn.net/ab522628 ...

  3. keras猫狗图像识别

    这里,我们介绍的是一个猫狗图像识别的一个任务.数据可以从kaggle网站上下载.其中包含了25000张毛和狗的图像(每个类别各12500张).在小样本中进行尝试 我们下面先尝试在一个小数据上进行训练, ...

  4. JavaEE--分布式对象

    参考:http://blog.csdn.net/smcwwh/article/details/7080997 1.客户与服务器的角色 所有分布式编程技术的基本思想都很简单:客户计算机产生一个请求,然后 ...

  5. MySQL--OPTIMIZE TABLE碎片整理

    参考:http://blog.51yip.com/mysql/1222.html BLOB和TEXT值会引起一些性能问题,特别是在执行了大量的删除操作时.删除操作会在数据表中留下很大的空洞,以后填入这 ...

  6. java内存区域与内存溢出异常(1)

    一. 运行时数据区域 java虚拟机在执行Java程序的过程中,会把它所管理的内存划分为若干个不同的数据区域偶 1.程序计数器 程序计数器是一块较小的内存空间,作用是当前线程所执行的字节码的行号指示器 ...

  7. python学习Day08--文件操作

    [主要内容] 文件操作: 1. r 2. w 3. a 4. r+ 读写模式. 需要移动光标进行反复读写 5. w+ 6. a+ 7. b bytes 读写操作的是字节. 用在非文本上 8. seek ...

  8. Spring boot 基于注解方式配置datasource

    Spring boot 基于注解方式配置datasource 编辑 ​ Xml配置 我们先来回顾下,使用xml配置数据源. 步骤: 先加载数据库相关配置文件; 配置数据源; 配置sqlSessionF ...

  9. [ZJOI2019]Minimax搜索(线段树+动态DP+树剖)

    为什么我怎么看都只会10pts?再看还是只会50~70?只会O(n2(R-L+1))/O(nlogn(R-L+1))……一眼看动态DP可还是不会做…… 根节点的答案是叶子传上来的,所以对于L=R的数据 ...

  10. Spring Boot使用Liquibase最佳实践

    Liquibase问题 随着项目的发展,一个项目中的代码量会非常庞大,同时数据库表也会错综复杂.如果一个项目使用了Liquibase对数据库结构进行管理,越来越多的问题会浮现出来. ChangeSet ...