时间戳转多久之前

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. 手写数字识别——利用keras高层API快速搭建并优化网络模型

    在<手写数字识别——手动搭建全连接层>一文中,我们通过机器学习的基本公式构建出了一个网络模型,其实现过程毫无疑问是过于复杂了——不得不考虑诸如数据类型匹配.梯度计算.准确度的统计等问题,但 ...

  2. jpa报错object references an unsaved transient instance

    错误原因: 在调用hibernate存储数据时,需要将数据库中表对应的持久类对象作为参数传递.如果这时的对象中有其他的表字段属性并且是引用对象类型,那么这个属性必须是持久态或者是null的,瞬时态和脱 ...

  3. 一个简单的java web项目 仅实现添加

    连接数据库已经进行判断 要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分 ...

  4. 题解【AcWing91】最短Hamilton路径

    题面 看到数据范围这么小,第一眼想到爆搜. 然而这样做的复杂度是 \(\mathcal{O}(n! \times n)\) 的,明显会 TLE. 于是考虑状压 DP. 我们设 \(dp_{i,j}\) ...

  5. 项目打jar包和运行

    打包成jar包和部署,运行. 1.在pom.xml中加入  <packaging>jar</packaging> <groupId>com.demo02</g ...

  6. [Arc083D/At3535] Restoring Road Network - 最短路,结论

    [Arc083D/At3535] 有 \(N\) 个城市,城市与城市之间用长度为整数的无向道路连接. 现有一考古学家找到了一张 \(N×N\) 的表 \(A\) ,这张表代表了这 \(N\) 座城市两 ...

  7. hadoop 配置信息记录

    ssh-keygen  -t   rsa   -P  '' 192.168.157.148 hadoop01192.168.157.149 hadoop02 mkdir  /root/hadoopmk ...

  8. PTA-1003 我要通过!

    1003 我要通过!https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192 “答案正确”是自动判题系 ...

  9. windows10 安装盘制作以及重装系统

    1,安装盘制作 1),需要有系统的源文件才能装机,源文件请百度“windows10”选择microsoft官网的链接:这里,选择立即下载工具 2),很快就能下载好,双击运行,选择制作启动盘.启动盘的特 ...

  10. python使用selenium驱动chromium防止浏览器自动升级失效!

    python爬虫或者自动化项目中有时会用到selenium自动化测试框架,驱动chrom时由于谷歌浏览器自动升级,会造成驱动和浏览器版本不匹配问题,这时可以用到Chromium,这是谷歌推出用于开发目 ...