php工具方法
备忘常用方法
1.寻找子栏目(权限\菜单列表。。。)
function getSon($list,$pid){
$arr='';
foreach ($list as $k=>$v){
if($v['pid']==$pid){
$v['son']=getSon($list,$v['id']);
$arr[]=$v; } }
return $arr;
}
2.删除文件
private function _deleteDir($R){
//打开一个目录句柄
$handle = opendir($R);
//读取目录,直到没有目录为止
while(($item = readdir($handle)) !== false){
//跳过. ..两个特殊目录
if($item != '.' and $item != '..'){
//如果遍历到的是目录
if(is_dir($R.'/'.$item)){
//继续向目录里面遍历
$this->_deleteDir($R.'/'.$item);
}else{
//如果不是目录,删除该文件
if(!unlink($R.'/'.$item))
die('error!');
}
}
}
//关闭目录
closedir( $handle );
//删除空的目录
return rmdir($R);
}
3.正则匹配百度首页logo地址
//获取百度logo图片地址
$url="https://www.baidu.com";
$f=file_get_contents($url);
preg_match_all("<img.*?src=\"(.*?.*?(logo).*?)\".*?>",$f,$match);
foreach($match[1] as $val){
echo $val;
echo "</br>";
}
3.1 常见邮箱验证规则:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
4.图片上传
function saveAvatar($content) {
global $_W;
if (empty($content)) {
$this->exitJson("图片未找到", 1);
}
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $content, $result)) {
$type = $result[2];
$img = base64_decode(str_replace($result[1], '', $content));
} else {
$img = base64_decode($content);
$type = "jpg";
}
$fileUrl = "attachment/images/" . $_W['uniacid'] . "/" . date("Y") . "/" . date("m") . "/";
if(!is_dir(IA_ROOT ."/".$fileUrl)){
mkdir(IA_ROOT ."/".$fileUrl,0777);
}
$imageName = random(15) . time() . "." . $type;
$size = file_put_contents(IA_ROOT . "/" . $fileUrl . $imageName, $img);
if ($size > 2 * 1024 * 1024) {
$this->exitJson("图片过大!", 1);
}
return $_W['siteroot'] . $fileUrl . $imageName;
}
5.查找下级id(递归)
function getSubs($id, $includeSelf = true){
static $ids = [];
if($includeSelf) {
if(!in_array($id, $ids)) {
array_push($ids, $id);
}
}
$subIds = M('user')
->field('user_id')
->select();
$subIds = array_column($subIds, 'user_id');
$ids = array_unique(array_merge($ids, $subIds));
foreach($subIds as $sub_id) {
getSubs($sub_id, $includeSelf);
}
return $ids;
}
5.2 递归查找下级(循环)
function getSubIds($userID, $includeSelf = true){
$userIDs = [$userID];
while (true) {
$subIDs = M('user')
->field('user_id')
->where(['pid' => ['IN', $userIDs]])
->select();
$subIDs = array_column($subIDs, 'user_id');
$userCount = count($userIDs);
$userIDs = array_unique(array_merge($userIDs, $subIDs));
if ($userCount == count($userIDs)) {
break;
}
}
if (!$includeSelf) {
for ($i = 0; $i < count($userIDs); ++$i) {
if ($userIDs[$i] == $userID) {
array_splice($userIDs, $i, 1);
break;
}
}
}
return $userIDs;
}
6. php 命令行下执行定时任务:php index.php /crontab/index/cron
7. 判断是不是同一条线的用户
/**
* 检测是不是同一条线
* @param $uid
* @param $pid
* @param int $depth
* @return bool
*/
function checkIsBelong( $uid , $pid , $depth = )
{ if ( $uid == $pid && $depth > ) {
return true;
} $uid = query_user ( $uid , 'ue_accname' );
if ( !empty($uid) ) {
return checkIsBelong ( $uid , $pid , $depth + );
} return false;
} //获取用户信息
function query_user( $uid , $field = false )
{
$model = M ( 'user' );
if ( $field ) {
$arr_info = $model->field ( $field )->where ( [ 'UE_account' => $uid ] )->find ();
return $arr_info[ $field ];
} else {
$arr_info = $model->where ( [ 'UE_account' => $uid ] )->find ();
return $arr_info;
}
}
php工具方法的更多相关文章
- JQuery操作类数组的工具方法
JQuery学习之操作类数组的工具方法 在很多时候,JQuery的$()函数都返回一个类似数据的JQuery对象,例如$('div')将返回div里面的所有div元素包装的JQuery对象.在这中情况 ...
- jQuery工具方法
目录 常用工具方法 判断数据类型的方法 Ajax操作 $.ajax 简便写法 Ajax事件 返回值 JSONP 文件上传 参考链接 jQuery函数库提供了一个jQuery对象(简写为$),这个对象本 ...
- jQuery晦涩的底层工具方法们
这里整理的是jQuery源码中一些比较晦涩难懂的.内部的.最底层的工具方法,它们多为jQuery的上层api方法服务,目前包括: jQuery.access jQuery.access: functi ...
- angular的工具方法笔记(equals, HashKey)
分别是angular脏值检测的工具方法equals和 类HashKey的使用方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...
- zepto源码学习-02 工具方法-详细解读
上一篇:地址 先解决上次留下的疑问,开始看到zepto.z[0]这个东西的时候,我很是不爽,看着它都不顺眼,怎么一个zepto的实例对象var test1=$('#items'); test__pr ...
- jQuery源代码 解析一 工具方法
1. 外层沙箱以及命名空间$ 几乎稍微有点经验前端人员都这么做,为了避免声明了一些全局变量而污染,把代码放在一个"沙箱执行",然后在暴露出命名空间(可以为API,函数,对象): 2 ...
- Underscore.js 常用类型判断以及一些有用的工具方法
1. 常用类型判断以及一些有用的工具方法 underscore.js 中一些 JavaScript 常用类型检查方法,以及一些工具类的判断方法. 首先我们先来谈一谈数组类型的判断.先贴出我自己封装好的 ...
- 秒味课堂Angular js笔记------Angular js中的工具方法
Angular js中的工具方法 angular.isArray angular.isDate angular.isDefined angular.isUndefined angular.isFunc ...
- javascript 的工具方法 --- 类型判断
Javascript中常见类型对象有: Boolean, Number, String, Function, Array, Date, RegExp, Object, Error, Symbol等等. ...
- JavaScript 深入学习及常用工具方法整理 ---- 01.浮点数
在JavaScript中是不区分整数值和浮点数值的,其中所有的数字均用浮点数值表示.JavaScript采用IEEE 754标准(有兴趣可以浏览网络规范分类下的IEEE 754标准,需要原文件请在留言 ...
随机推荐
- IT软件管理人员的职业路线(从技术经理到总经理) - CEO之公司管理经验谈
技术.业务和管理永远是工作的一个话题.笔者今天就根据自身的经验,通过这三个方面介绍下IT软件管理人员的职业路线.前面写过一个文(IT软件技术人员的职位路线(从程序员到技术总监) - 部门管理经验谈), ...
- 【Django】中间件
Middleware 这个地方把所有Request 拦截住,用我们自己的方式完成处理以后直接返回 Response.因此了解中间件的构成是非常必要的. Initializer: __init__(se ...
- 初学 Python(十四)——生成器
初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...
- Docker学习--->>Docker的认识,安装,及常用命令熟悉
Docker是什么? 在平常的软件开发中,会面临着开发不同的程序或服务需要不同的环境.而在该环境上开发完成后,想要在其他的环境上部署,则需要自己去重新部署,而Docker的出现使得这样的迁移变得容易. ...
- Solr-Centos7 安装部署solr-5.5.4
一 下载安装所需文件 http://archive.apache.org/dist/lucene/solr/ solr-5.5.4.tgz http://archive.apache.org/dist ...
- Go语言学习笔记(七)杀手锏 Goroutine + Channel
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 Goroutine Go语言的主要的功能在于令人简易使用的并行设计,这个方法叫做Goroutine,通过Gorou ...
- Comparable与Comparator,java中的排序与比较
1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较. 排序:在集合类中,对集合类中的实体进行排序.排序基于的算法基于实体类提供的比较函数. 基本型别都提供了默认的比较算法,如s ...
- 测试与开发如何有效沟通,QC11(HP ALM 11)的简单使用记录
笔者所在的项目组使用的缺陷管理工具是HP的QC11,作为测试人员,为了与开发一起跟随Bug的一生,简单的写了使用流程,这里记录一下,主要是让开发人员熟悉一下. 首先使用账户登录QC,如地址: http ...
- ECMAScript6-let与const命令详解
前言 <ECMAScript入门>是一本开源的JavaScript语言教程,全面介绍ECMAScript6新引入的语法特性. let和const命令,是第一章开始介绍,也是比较基础的知识. ...
- Java将数据写入word文档(.doc)
Java可用org.apache.poi包来操作word文档.org.apache.poi包可于官网上下载,解压后各jar作用如下图所示: 可根据需求导入对应的jar. 一.HWPFDocument类 ...