标签 笔记 下的文章

trim汉字导致乱码解决

汉字trim时可能导致乱码,如:
trim("张三、李言、", "、");
解决:

/**
 * 中文trim 解决中文trim乱码
 * @param $string
 * @param string $trim_chars
 * @return string|string[]|null
 */
function mb_trim($string, $trim_chars = '\s'){
    return preg_replace('/^['.$trim_chars.']*(?U)(.*)['.$trim_chars.']*$/u', '\\1',$string);
}

.gitignore忽略已提交的文件

对于首次提交时,会忽略.gitignore中对应的文件。如果已提交再次修改.gitignore则不会忽略,仍会追踪文件变化。

解决:
git rm --cached folder/file 并修改.gitignore文件

另:
git update-index --assume-unchanged 的真正用法是这样的:

  1. 你正在修改一个巨大的文件,你先对其 git update-index --assume-unchanged,这样 Git
    暂时不会理睬你对文件做的修改
  2. 当你的工作告一段落决定可以提交的时候,重置改标识:git update-index
    --no-assume-unchanged,于是 Git 只需要做一次更新,这是完全可以接受的了
  3. 提交+推送

原文:https://segmentfault.com/q/1010000000430426

PHP下载微信头像 微信活动海报

最近搞一个微信分享吸粉的活动,需要生成用户推广海报,使用TP的图像处理类可轻易添加昵称、图片、二维码等水印信息。但在生成此海报时,由于下载微信头像到本地/服务器用时太长,导致海报生成时间过长问题。

解决方法
使用curl压缩下载图片,加速图片下载速度,实现海报生成速度由8s左右到1s的提升。

- 阅读剩余部分 -

MySql 百千万级别数据中随机获取一条或多条记录之RAND()优化

最近所做读书小程序中需从千万条数据中随机抽取一条名言语录展示,常规的select * from famous order by RAND() LIMIT 1;,缺少索引及全表扫描,速度异常慢。
SELECT * FROM famous AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM famous)-(SELECT MIN(id) FROM famous))+(SELECT MIN(id) FROM famous)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;

date("Y-m-d",strtotime("-1 month")) 真的靠谱吗?

时常用date("Y-m-d",strtotime("-1 month"))获取上个月的日期,其实它并不靠谱。
如当前日期未3月3,则:var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2018-03-31"))));
得到的结果并非2018-02-28而是2018-03-03
正确的方式之一是添加last day of first day of
var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31"))));