时间戳转多久之前

function mdate($time = NULL) {
$text = '';
$time = $time === NULL || $time > time() ? time() : intval($time);
$t = time() - $time; //时间差 (秒)
$y = date('Y', $time)-date('Y', time());//是否跨年
switch($t){
case $t == 0:
$text = '刚刚';
break;
case $t < 60:
$text = $t . '秒前'; // 一分钟内
break;
case $t < 60 * 60:
$text = floor($t / 60) . '分钟前'; //一小时内
break;
case $t < 60 * 60 * 24:
$text = floor($t / (60 * 60)) . '小时前'; // 一天内
break;
case $t < 60 * 60 * 24 * 3:
$text = floor($time/(60*60*24)) ==1 ?'昨天 ' . date('H:i', $time) : '前天 ' . date('H:i', $time) ; //昨天和前天
break;
case $t < 60 * 60 * 24 * 30:
$text = date('m月d日 H:i', $time); //一个月内
break;
case $t < 60 * 60 * 24 * 365&&$y==0:
$text = date('m月d日', $time); //一年内
break;
default:
$text = date('Y年m月d日', $time); //一年以前
break;
} return $text;
}

//json乱码转中文

function decodeUnicode($str){
return preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
create_function(
'$matches',
'return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");'
),
$str);
}
//时间戳转日期
function MyDate($time){
return date("Y-m-d H:i:s",$time);
}
//获取真实ip
function getClientIP(){
global $ip;
if(getenv("HTTP_CLIENT_IP")){
$ip = getenv("HTTP_CLIENT_IP");
}else if(getenv("HTTP_X_FORWARDED_FOR")){
$ip = getenv("HTTP_X_FORWARDED_FOR");
}else if(getenv("REMOTE_ADDR")){
$ip = getenv("REMOTE_ADDR");
}else{
$ip = "NULL";
}
return $ip;
}

curl爬虫

function _grab($curl,$postInfo='',$cookie='',$referer='',$userAgent=''){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $curl);
//不输出头
curl_setopt($ch, CURLOPT_HEADER, 0);
//以字符串返回获取的信息,不直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//如果是https链接,不验证证书
if(preg_match('/https/i', $curl)){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
//POST
if($postInfo){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postInfo);
}
//加入cookie
if($cookie){
curl_setopt($ch,CURLOPT_COOKIE,$cookie);
}
//模拟来路
if($referer){
curl_setopt($ch, CURLOPT_REFERER, $referer);
}
//模拟环境
if($userAgent){
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
}
//执行
$content = curl_exec($ch);
//错误处理
if ($content === false) {
return "网络请求出错: " . curl_error($ch);
exit();
}
   curl_close($ch);
return $content;
}
   //输入二维数组,输出二维数组的全部可能,用于生成sku
//$data = ['颜色'=>['红','黄','蓝'],'内存'=>['4G','8G']];
//得到:Array ( [0] => Array ( [颜色] => 红 [内存] => 4G ) [1] => Array ( [颜色] => 红 [内存] => 8G ) [2] => Array ( [颜色] => 黄 [内存] => 4G ) [3] => Array ( [颜色] => 黄 [内存] => 8G ) [4] => Array ( [颜色] => 蓝 [内存] => 4G ) [5] => Array ( [颜色] => 蓝 [内存] => 8G ) )
public function getSkus($data){
/* $data = ['颜色'=>['红','黄','蓝'],'内存'=>['4G','8G']];*/
//用来装key
$index = [];
foreach ($data as $key => $value) {
//key的集合
$index[] = $key;
} //data数组元素的个数
$count = count($index);
//newData 用于装结果
$newData = []; //第一种可能
if($count==1){
//此时 $index[0]就是$data的第一个key
$data_1 = $data[$index[0]];
//如果只有一位,for循环只有一层
for($x = 0;$x<count($data_1);$x++){
//$index[0]是索引
$newData[] = [$index[0]=>$data_1[$x]];
}
} elseif($count==2){
$data_1 = $data[$index[0]];
$data_2 = $data[$index[1]];
for($x = 0; $x<count($data_1);$x++){
for($y = 0; $y <count($data_2); $y++){
//index[0] , 和 ,$index[1]分别是索引
$newData[] = [$index[0] => $data_1[$x],$index[1] => $data_2[$y]];
}
}
} elseif($count==3){
$data_1 = $data[$index[0]];
$data_2 = $data[$index[1]];
$data_3 = $data[$index[2]];
for($x = 0; $x<count($data_1);$x++){
for($y = 0; $y <count($data_2); $y++){
for($z = 0; $z <count($data_3) ; $z++){
//index[0] , 和 ,$index[1] ,$index[2] 分别是索引
$newData[] = [$index[0] => $data_1[$x],$index[1] => $data_2[$y],$index[2] => $data_3[$z]];
}
}
}
} elseif($count==4){
$data_1 = $data[$index[0]];
$data_2 = $data[$index[1]];
$data_3 = $data[$index[2]];
$data_4 = $data[$index[3]];
for($x = 0; $x<count($data_1);$x++){
for($y = 0; $y <count($data_2); $y++){
for($z = 0; $z <count($data_3) ; $z++){
for($a = 0; $a <count($data_4) ; $a++){
//index[0] , 和 ,$index[1] ,$index[2] 分别是索引
$newData[] = [$index[0] => $data_1[$x],$index[1] => $data_2[$y],$index[2] => $data_3[$z],$index[3] => $data_4[$a]];
}
}
}
}
} else{
return false;
}
return $newData;
}
//写入日志date('m_d')
function my_log($data){
$log_file = date('m_txt__d__',time()).'.txt';
/* $content =var_export($data,TRUE);*/
$data .= "\r\n";
file_put_contents($log_file,$data, FILE_APPEND);
}
//从txt一行一行读取成数组
function readKeyword(){ $data = [];
$f= fopen("danci.txt","r");
$count = 0;
while (!feof($f))
{
$line = fgets($f);
$line = substr($line, 0,6);
$data[] = $line;
}
fclose($f);
return $data;
}
编码

header("Content-Type:text/html;charset=utf-8");

//时区
date_default_timezone_set("PRC"); ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0); // 通过set_time_limit(0)可以让程序无限制的执行下去 ob_flush(); //输出缓冲
flush();
     //网络图片转换本地图片
function jpgChangeLocal($pic){ //获取文件
$file = _request($pic);
$end = rand(1000,9999).'_'.time().'.jpg';
$dir_path = 'd:/image';
if(!is_dir($dir_path)){
mkdir($dir_path);
} $filename = $dir_path.'/'.$end;
//打开写入流
$resource = fopen($filename, 'a');
//写入
fwrite($resource, $file);
//关闭资源
fclose($resource); return '@'.dirname(__FILE__).'/'.$filename;
}

php一些实用的自制方法的更多相关文章

  1. ORA-01033: ORACLE initialization or shutdown in progress 实用的处理方法

    ORA-01033: ORACLE initialization or shutdown in progress 实用的处理方法,此问题通常是由于电脑非正常关机造成的,我们可以用下面的方法查找出是那个 ...

  2. jquery实用的一些方法

    做个购物车功能,需要修改下前端页面 有些实用的方法总结一下 当你想实现最基本的加减法的时候,对于转换number实用Number(str)即可 首先明确下页面的每一行是动态的,这个时候绑定事件的时候不 ...

  3. Pycharm注册码最新版本2019激活码activation code + 最实用的激活方法(亲测有效)

    同时适用于jetbrains全系列可用例:IDEA.WebStorm.phpstor 由于想趁着这个寒假多学习下python,所以这些实用小技巧分享给大家,拿走不谢~ 这里为大家提供了两种最实用的激活 ...

  4. [转]VS2005/2008过期之后简单实用的升级方法

    网络上有不少key,但是用了之后没效果,发现了一个好方法可以解决.  把\vs\setup\下面的 setup.sdb文件用文本编辑器打开,然后改动其最后的一行([Product Key] 下面的一行 ...

  5. 一些比较实用的javascript方法收集,留着有用

    动态加载javascript文件 <script type="text/javascript"> //<!-- /*动态加载方法*/ function loadS ...

  6. 修改html很实用的insertAdjacentHTML方法

    添加HTML内容与文本内容以前用的是innerHTML与innerText方法, 最近发现还有insertAdjacentHTML和 insertAdjacentText方法, 这两个方法更灵活,可以 ...

  7. phpcms代码读取文章的内容 实用可行的方法

    在使用phpcms做网站的时候经常遇到读取网站的内容作为推荐,而不是描述.这里使用可行的方法交你如何读取内容推荐.方法有两个,第一种执行的效率低,第二个效率高些. 1. {pc:get sql=&qu ...

  8. Parallel.For 你可能忽视的一个非常实用的重载方法

    说起Parallel.For大家都不会陌生,很简单,不就是一个提供并行功能的for循环吗? 或许大家平时使用到的差不多就是其中最简单的那个重载方法,而真实情况 下Parallel.For里面有14个重 ...

  9. MSIL实用指南-创建方法和定义参数

    本篇讲解实现创建方法.指定参数的名称.实现参数加out和ref修饰符.以及参数加默认值. 创建方法 创建方法用类TypeAttributes的 DefineMethod(string name, Me ...

随机推荐

  1. JXLS支持嵌套循环语法的数据导出说明

    今天在试验用Jxls 2.0导出嵌套循环数据时,第二层数据一直没有成功,最后确认是数据源结构不正确所致,现将这两种数据格式进行说明:假设模板中批注有这样两条循环语法: <jx:each(item ...

  2. K3标准产品的BOS单据发布至自定义模块

    在自定义模块 下先随便发布一张单据,然后后台更新数据表. select * from icclasstype where fname_chs like '付款申请单%'   --查询表单的ID upd ...

  3. mybatis一级缓存和二级缓存(二)

    注意事项与示例配置 一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言.所以在参数和SQL完全一样的情况下,我们使用 ...

  4. 利用Master库spt_values表 连续数字

    SELECT CONVERT ( ), dateadd(d, number, GETDATE()), ) AS every_time FROM master..spt_values n WHERE n ...

  5. redis 有序集合(set),无需集合(zset)

    1.set(无序集合)无序集合每个元素都是string元素的唯一性,不能重复没有修改操作 1.增加 sadd key value1 value2 value3... 2.获取 smembers key ...

  6. 论如何用python发qq消息轰炸虐狗好友

    因为我的某个好友在情人节的时候秀恩爱,所以我灵光一闪制作了qq消息轰炸并记录了下来. PS:另外很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基 ...

  7. JDBC未知列

    Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4. MySQLSyntaxErrorException: Unk ...

  8. python面试的100题(16)

    Python高级 元类 42.Python中类方法.类实例方法.静态方法有何区别? 类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对 ...

  9. 题解【AcWing271】杨老师的照相排列

    题面 经典的线性 \(\text{DP}\) . 设 \(dp_{a,b,c,d,e}\) 表示第 \(1\) 排有 \(a\) 个人,第 \(2\) 排有 \(b\) 个人, 第 \(3\) 排有 ...

  10. cat 显示文本、less 分屏显示文本、more 分页显示文件、head 显示文件的前面的内容、cut 切割、paste合并、wc用来对文本进行统计、sort排序、权限、关闭文件、vim的使用

    cat 显示文本  -E 显示结尾的$符 -n 对显示的每一行进行编号 -b 对非空行进行编号 -s 对连续的空行进行压缩 tac 倒序显示 less 分屏显示文本 向下翻一屏 空格 向下翻一行 回车 ...