php sqlite
1 | # -- 查询当前数据库信息 |
S.O.I.L.D 之单一职责
1 | <?php |
与微博内容分析相关的正则表达式
1 | 微博表情\[[\u4e00-\u9fa5A-Za-z]{1,8}\] |
Warning: count(): Parameter must be an array or an object
1 | PHP7.2中这样写https://segmentfault.com/a/1190000017268206 |
无限级分类
1 | php artisan make:migration create_category_table --create=category |
本周一的时间戳
1 | strtotime('monday'); |
广度优先搜索
1 | /** |
归并排序
1 | function sortArr($arr) { |
正则表达式实现 @某人
1 | if (preg_match_all (‘#@\w+#u’, ‘@张全蛋 含泪质检 @三星 Note7 被炸飞,听说 @炸机 跟 @啤酒 更配哦!’, $matches)) { |
快排和归并排序
1 | /** |
Jwt前后端分离
1 | vi composer.json |
递归
1 | & 引用赋值 |
Laravel中chunk方法分块处理数据的坑
1 | public function chunk($count, callable $callback) |
代码细节
1 | 一个数组对象成员,你知道怎么写吗? |
PHP 7.1 中使用 openssl 取代 mcrypt
1 | /** |
static 效率优化
1 | function get_some_var(){ |
解码 JSONP
1 | function jsonp_decode($jsonp, $assoc = false) { |
合并多维数组中的子数组
1 | $merged = call_user_func_array('array_merge', $result); |
simplexml_load_string 的 parser error 问题
1 | 首先使用函数 libxml_use_internal_errors() 关闭 XML 错误,然后使用 libxml_get_errors() 获取相关的错误进行自定义处理。 |
如何移除控制字符
1 | function wpjam_strip_control_characters($str){ |
获取 Linux 服务器的 uptime
1 | $uptime = trim(shell_exec('uptime')); |
用Memcahced 的时候,请不要把过期时间设置成超过30天
1 | 过期时间是一个 Unix 时间戳,也可以是一个从现在算起的以秒为单位的数字。 |
json_decode 无法解析
1 | include 'JSON.php';//https://github.com/pear/Services_JSON |
cURL 报错 error 60 SSL certificate problem
1 | 将 cacert.pem 文件保存在可到达的目标中。 |
按周取时间段
1 | $start = '1478863624'; |
PHP 代码安全
1 | https://learnku.com/articles/28505 |
匿名函数
1 | $var = "https://6619.io"; |
比较字符串
1 | 列出目录https://www.restran.net/2016/09/26/php-security-notes/ |
md5
1 | 两个 md5 一样的字符串 |
方法多次调用
1 | <?php |
越权漏洞
1 | 水平越权就是同等角色下的用户,不但能够访问和操作自己私有的数据,还能访问其他人私有的数据,其根本是基于数据的访问权限。 |
限制分页条目
1 | 恶意请求者请求把 pagesize 输入 5000,10000 等甚至更大的数,会给数据库带来一定的压力,localhost/api/articles?pageid=0&pagesize=10000 |
XSS
1 | <body> |
CSRF
1 | 例如网站上有用户可以用来注销账户的链接。 |
No input file specified
1 | 2019/05/23 12:31:44 [error] 5085#5085: *1 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(/home/vagrant/Code/haopai-git/public/index.php) is not within the allowed path(s): (/www/wwwroot/dev.guooo.top/:/tmp/:/proc/) in Unknown on line 0 |
一个简单的composer包
1 | vi https://github.com/jianyan74/php-excel/blob/master/composer.json |
jwt记录
1 | JWT 由三部分组成:头部、数据体、签名 / 加密 |
PHP-FPM 创建慢日志
1 | CGI: 是一个协议,规定了 Web 服务器和后端语言的交互。但是性能差点,每个请求都会 fork 一个新的进程。\ |
正则表达式之难点
1 | 断言 ?<= 这个是对需要匹配的目标左边的(前面)的进行断言,断定它前面会出现的 但是不会被匹配到。如: |
S.O.I.L.D 之接口隔离
1 | https://learnku.com/articles/29130 |
array_map
1 | $pieces = []; |
intval() 与 (int)
1 | $int = intval('0123', 8); // == 83 |
json_encode() 序列化非公开属性
1 | class Foo implements \JsonSerializable |
PHP 引用详解
1 | $catList = [ |
封装代码
1 | if (IS_POST) { |
无限极分类树
1 | array( |
代理与反向代理、负载均衡和缓存
1 | 代理(正向代理,目标服务器不知道谁在访问) |
Swoole,Redis list实现简单消息推送
1 | swoole.php |
Redis list队列异常崩溃
1 | 用 Redis list 做消息队列,在取出消息的时候 Redis 宕机,程序上的业务逻辑没执行,怎样处理?先不去考虑 Redis 的异常处理及恢复,一般主从哨兵机制很难崩溃,暂时考虑程序端如何处理这种 |
从0-n之间取k个不重复的数
1 | 使用 array 系列函数的方法 |
匿名函数
1 | //声明一个狗对象 |
数组整合合并
1 |
|
循环中查询数据库
1 | foreach ( $product as $p) { |
json排序
1 | array:5 [ |
数组排序
1 | array_multisort(array_column($array,'sort'),SORT_ASC,$array); |
图片上传添加自动裁剪
1 | composer require intervention/image |
快速接入 GitHub 登陆
1 | /** |
PHP 安全问题入门
1 | SQL 注入 |
内置 Web 服务器
1 | php -S localhost:8000 -t public/ |
phpexcel
1 | https://github.com/PHPOffice/PhpSpreadsheet |
PHP 多进程
1 | $processNum = 4; |
php 进程
1 | 后台运行 |
码模拟实现队列
1 | define('MAXSIZE',5);//队列空间大小 |
夏令时
1 | //判断美国那个时间段是否为夏令时 |
去除emoji
1 | function removeEmoji($text) { |
imagick等比缩放图片
1 | /** |
redis支持php的序列化和反序列化
1 | $redis = new Redis(); |
一致性hash
1 | // 整数hash |
抽奖的经典算法
1 | function get_rand($proArr) { |
本月第一天
1 | //上一周的周一周末 |
多维数组转一维数组
1 | <?php |
面向对象的三大特性
1 | 封装,继承,多态 面向对象的五大原则 |
PHP 并发
1 | 使用队列,额外起一个进程处理队列,并发请求都放到队列中,由额外进程串行处理,并发问题就不存在了,但是要额外进程支持以及处理延迟严重,本文不先不讨论这种方法。 |
PHP 守护程序
1 | // 编写一个简单daemon程序https://learnku.com/articles/30595 |
JSON_encode () 精度缺失
1 | $info = 26.54; |
生成器
1 | function getRange ($max = 10) { |
字符串分割
1 | $str = '#本科 & 硕士 @博士 - 教授'; |
闭包和匿名函数
1 | function callFunc1(Closure $closure) { |
curl绑定host
1 | xxx.cn 测试的host为172.16.252.2 |
错误和异常
1 | https://learnku.com/articles/25813 |
装饰器
1 | 封装,继承,多态 |
理解 cookie、session、token
1 | session这对服务器说是一个巨大的开销 , 严重的限制了服务器扩展能力, 比如说我用两个机器组成了一个集群, 小 F 通过机器 A 登录了系统, 那 session id 会保存在机器 A 上, 假设小 F 的下一次请求被转发到机器 B 怎么办?机器 B 可没有小 F 的 session id 啊。有时候会采用一点小伎俩:session sticky , 就是让小 F 的请求一直粘连在机器 A 上, 但是这也不管用, 要是机器 A 挂掉了, 还得转到机器 B 去。那只好做 session 的复制了, 把 session id 在两个机器之间搬来搬去, 快累死了。 |
分割字符串
1 | function mb_str_split($string): array |
计算身份证的最后一位验证码
1 | /** |
简单工厂模式
1 | 使用简单工厂模式重新实现达到解耦的目的 |
array_reduce 多值化一
1 | array_reduce 函数内部实现机制,更类似于如下代码 |
过滤空白字符
1 | $s=" 空白字符"; |
curl 上传图片
1 | <form action="http://myServerURL" method="POST" enctype="multipart/form-data"> |
快手短视频无水印
1 | composer require guzzlehttp/guzzle |
根据另外一个数组去重
1 |
|
获取字符串内的链接
1 | preg_match_all('/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i',strip_tags($content),$m); |
PhpSpreadsheet 小教程https://github.com/PHPOffice/PhpSpreadsheet
获取国内财经门户网股票数据composer包https://learnku.com/laravel/t/30040
Tideways、xhprof 和 xhgui 打造 PHP 非侵入式监控平台
PC 端微信扫码支付全过程 — easywechat + Laravel 5.8
phpstorm的奇技淫巧http://phpstorm.tips/tips