首页
📷在线壁纸
🎬娱乐天地
🔖友情链接
更多
📝留言板
Search
1
【javascript】JS-向当前url追加参数
2,345 阅读
2
【PHP】生成随机昵称
2,219 阅读
3
【PHP】判断一个字符串是否属于序列化后的数据
2,026 阅读
4
【css】html+css给文章页,做阅读全文
1,975 阅读
5
【PHP】 设计模式(23种)
1,913 阅读
📂默认分类
💓typecho
🏳️🌈代码改变世界
🍇 mysql
🍈 Winform
🍓 golang
🍉 设计模式
🥝 PHP
🍎 python
🍊 nginx
🍋 网络安全
🍍 javascript
🫑 database
🍭文艺范
🍏mac
AI
LLM
stableDiffusion
TTS
yolo
3D
code
comfyui
ASR
登录
Search
标签搜索
php
typecho
代码注释
redis
mysql
go
golang
nginx
thinkphp
docker
gin
linux
curl
html
mamp
算法
短网址
构造函数
webhook
代码片段
依然范儿特西
累计撰写
150
篇文章
累计收到
1
条评论
首页
栏目
📂默认分类
💓typecho
🏳️🌈代码改变世界
🍇 mysql
🍈 Winform
🍓 golang
🍉 设计模式
🥝 PHP
🍎 python
🍊 nginx
🍋 网络安全
🍍 javascript
🫑 database
🍭文艺范
🍏mac
AI
LLM
stableDiffusion
TTS
yolo
3D
code
comfyui
ASR
页面
📷在线壁纸
🎬娱乐天地
🔖友情链接
📝留言板
搜索到
150
篇与
的结果
2021-06-05
重新自定义typecho头像
看看以前的QQ头像替代默认的Gavatar头像功能,感觉不是很理想。因为当访客使用QQ邮箱评论时会显示QQ头像,可是如果使用的不是QQ头像,就会显示一个QQ企鹅头像,这样子在我看来是不行的。于是又萌生了修改的想法。首先,将下面的代码丢到funtions.php文件当中。//获取Gravatar头像 QQ邮箱取用qq头像 function getGravatar($email, $s = 96, $d = 'mp', $r = 'g', $img = false, $atts = array()) { preg_match_all('/((\d)*)@qq.com/', $email, $vai); if (empty($vai['1']['0'])) { $url = 'https://www.gravatar.com/avatar/'; $url .= md5(strtolower(trim($email))); $url .= "?s=$s&d=$d&r=$r"; if ($img) { $url = '<img src="' . $url . '"'; foreach ($atts as $key => $val) $url .= ' ' . $key . '="' . $val . '"'; $url .= ' />'; } }else{ $url = 'https://q2.qlogo.cn/headimg_dl?dst_uin='.$vai['1']['0'].'&spec=100'; } return $url; }其次,再将下面的代码复制到需要放头像的页面,通常是comments.php页面和sidebar.php页面。 <?php $email=$comments->mail; $imgUrl = getGravatar($email);echo '<img src="'.$imgUrl.'" width="45px" height="45px" style="border-radius: 50%;" >'; ?> 大功告成!该代码可以实现的功能:当客户评论时用的不是QQ邮箱,则显示gavatar头像,否则则显示QQ头像。完美!
2021年06月05日
245 阅读
0 评论
0 点赞
2021-06-04
【PHP】获取上周、本周、上月、本月、本季度、上季度、上年、本年时间方法大全
/** * 根据类型获取时间格式 * @param $time_type : 1年; 2季度; 3月; 4周; 5日; * @return time_start 开始时间 * @return time_end 结束时间 */ function sys_get_time_around($time_type) { $now_start = 0; $now_end=0; $last_start= 0; $last_end = 0; $now_time = time(); switch ($time_type) { case 'year': //今年 $now_start = mktime(0,0,0,1,1,date('Y')); $now_end = mktime(23,59,59,12,31,date('Y')); //去年 $last_start = mktime(0,0,0,1,1,date('Y')-1); $last_end = mktime(23,59,59,12,31,date('Y')-1); break; case 'quarter': $season = ceil((date('n'))/3)-1;//上季度是第几季度 //本季度 $now_season = ceil((date('n'))/3);//当月是第几季度 $now_start = mktime(0, 0, 0,$now_season*3-3+1,1,date('Y')); $now_end = mktime(23,59,59,$now_season*3,date('t',mktime(0, 0 , 0,$now_season*3,1,date("Y"))),date('Y')); //上一季度 $last_season = ceil((date('n'))/3)-1;//上季度是第几季度 $last_start = mktime(0, 0, 0,$last_season*3-3+1,1,date('Y')); $last_end = mktime(23,59,59,$last_season*3,date('t',mktime(0, 0 , 0,$last_season*3,1,date("Y"))),date('Y')); break; case 'month': //本月 $now_start = mktime(0,0,0,date('m'),1,date('Y')); $now_end = mktime(23,59,59,date('m'),date('t'),date('Y')); //上月 $last_start = mktime(0,0,0,date('m')-1,1,date('Y')); $last_end = mktime(23,59,59,date('m'),0,date('Y')); break; case 'week': //mktime 是从周日开始算,结束时间是周六 //本周 // $now_start = mktime(0,0,0,date('m'),date('d')-date('w')+1,date('Y')); // $now_end = mktime(23,59,59,date('m'),date('d')-date('w')+7,date('Y')); // //上周 // $last_start = mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y')); // $last_end = mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y')); //本周 $now_start = strtotime(date("Y-m-d 00:00:00",strtotime("this week Monday",$now_time ))); $now_end = strtotime(date("Y-m-d 23:59:59",strtotime("this week Sunday",$now_time ))); //上周 $last_start = strtotime(date("Y-m-d 00:00:00",strtotime("last week Monday",$now_time ))); $last_end = strtotime(date("Y-m-d 23:59:59",strtotime("last week Sunday",$now_time ))); break; case 'day': //今日 $now_start = mktime(0,0,0,date('m'),date('d'),date('Y')); $now_end = mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1; //昨日 $last_start = mktime(0,0,0,date('m'),date('d')-1,date('Y')); $last_end = mktime(23,59,59,date('m'),date('d')-1,date('Y')); break; default: # code... break; } $retult = [ 'time_type'=>$time_type, 'now_start'=>date('Y-m-d H:i:s',$now_start), 'now_end'=>date('Y-m-d H:i:s',$now_end), 'last_start'=>date('Y-m-d H:i:s',$last_start), 'last_end'=>date('Y-m-d H:i:s',$last_end), ]; return $retult; } 调用 $a = sys_get_time_around('week'); print_r($a);exit;此处一定要注意,本周和上周的时候,mktime是从 周日到周六,避免被坑
2021年06月04日
1,571 阅读
0 评论
1 点赞
2021-06-04
【PHP】 如何避免在foreach 里查询数据库
<?php ### 如何避免在foreach 里查询数据库 /** * 场景: * 商品表: goods * goods_id 商品ID * goods_name 商品名称 * brand_id 品牌id * 品牌表: brand * brand_id * brand_name **/ //此时我们已经得到一组数据,想到拿到品牌名称(此处为了演示。不考虑链表查询的情况下) $data_list = [ [ 'id'=>1, 'goods_id'=>1, 'goods_name'=>'老范测试', 'brand_id'=>1, //或许会拿更多字段,比如 产地,规格,等等 ], //-----或许更多数据 ]; /** * 错误示例 * 在业务量大的情况下。此处会多次读取数据库。增加数据库压力 */ foreach ($data_list as $key => $value) { $brand_mes = Db::table('brand')->field('name')->where(['id'=>$value['brand_id']])->find() if(!empty($brand_mes)){ $data_list[$key]['brand_name'] = $brand_mes['name']; }else{ $data_list[$key]['brand_name'] = '老范品牌'; //此处给一个默认值 } } /** * 建议使用以下用法,数据库查询一次,把其他操作放在内存里,以减少数据库IO * */ $brand_id_str = array_column($data_list,'brand_id'); //查询当前品牌ID包含所有品牌信息 $brand_list = Db::table('brand')->field('id,name')->whereIn('id',$brand_id_str)->select() $res_brand_array = []; if(!empty($brand_list)){ foreach ($brand_list as $k => $v) { // brand_id => brand_name 以这种形式存储,便于读取 $res_brand_array[$v['id']]=$v['name']; } } //最后组装数据 foreach ($data_list as $key => $value) { if(isset($res_brand_array[$value['brand_id']]) && !empty($res_brand_array[$value['brand_id']])){ $data_list[$key]['brand_name'] =$res_brand_array[$value['brand_id']; }else{ $data_list[$key]['brand_name'] = '老范品牌'; //此处给一个默认值 } //此处也可以增加其他字段的判定操作 } ?>
2021年06月04日
171 阅读
0 评论
2 点赞
2021-06-02
【javascript】JS-向当前url追加参数
var cate_id = 3; //当前url 追加参数 var newurl = updateQueryStringParameter(window.location.href, 'cate_id', cate_id); window.location.href = newurl; //当前url 追加参数 function updateQueryStringParameter(uri, key, value) { if(!value) { return uri; } var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); var separator = uri.indexOf('?') !== -1 ? "&" : "?"; if (uri.match(re)) { return uri.replace(re, '$1' + key + "=" + value + '$2'); } else { return uri + separator + key + "=" + value; } }
2021年06月02日
2,345 阅读
0 评论
1 点赞
2021-05-26
【PHP】抽奖算法
传入一个概率。得出是否中奖
2021年05月26日
1,709 阅读
0 评论
1 点赞
2020-03-31
【PHP】php实现的无限极分类
上代码<?php $rows = array( array( 'id' => 1, 'name' => 'dev', 'parentid' => 0 ), array( 'id' => 2, 'name' => 'php', 'parentid' => 1 ), array( 'id' => 3, 'name' => 'thinkphp', 'parentid' => 2 ), array( 'id' => 4, 'name' => 'life', 'parentid' => 0 ), array( 'id' => 5, 'name' => 'pdo', 'parentid' => 2 ), array( 'id' => 6, 'name' => 'pdo-mysql', 'parentid' => 5 ), array( 'id' => 7, 'name' => 'java', 'parentid' => 1 ) ); $tree=build_tree($arr,0); print_r($tree); function build_tree($rows,$root_id){ $childs=findChild($rows,$root_id); if(empty($childs)){ return null; } foreach ($childs as $k => $v){ $rescurTree=build_tree($rows,$v['id']); if( null != $rescurTree){ $childs[$k]['childs']=$rescurTree; } } return $childs; } function findChild($arr,$id){ $childs=array(); foreach ($arr as $k => $v){ if($v['parentid']== $id){ $childs[]=$v; } } return $childs; } ?>
2020年03月31日
1,502 阅读
0 评论
0 点赞
2020-02-22
【PHP】判断一个字符串是否属于序列化后的数据
function is_serialized( $data ) { $data = trim( $data ); if ( 'N;' == $data ) return true; if ( !preg_match( '/^([adObis]):/', $data, $badions ) ) return false; switch ( $badions[1] ) { case 'a' : case 'O' : case 's' : if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) ) return true; break; case 'b' : case 'i' : case 'd' : if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) ) return true; break; } return false; }
2020年02月22日
2,026 阅读
0 评论
0 点赞
2020-02-22
【PHP】获取汉字首字母大写
封装方法
2020年02月22日
1,167 阅读
0 评论
0 点赞
2020-02-22
【PHP】限制IP访问,授权IP,授权域名,支持单个,多个,通配符,IP段,支持黑白名单
其中 ip2long 为php内置函数,将IPv4的ip地址(以小数点分隔形式)转换为int
2020年02月22日
1,230 阅读
0 评论
0 点赞
2020-02-22
【PHP】百家姓姓名判断
百家姓姓名判断,封装方法:
2020年02月22日
1,287 阅读
0 评论
0 点赞
1
...
10
11
12
...
15