php
叶先生i
精致的程序猿一枚
展开
-
PHP基于xlswriter支持无限表头层级Excel导出
本章介绍基于PHP扩展xlswriter的Vtiful\Kernel\Excel类可以支持无限层级的复杂表头导出!废了九牛二虎之力,终于把这个功能类写完了…后续会持续更新优化准备xlswriter扩展windows系统:到PECL网站下载符合自己本地PHP环境的ddl文件下载地址,并复制到PHP的扩展目录ext文件夹下,修改php.ini文件,加上这行extension=xlswriter打开phpinfo()验证扩展是否安装成功Linux系统:pecl install xlswrite原创 2022-04-30 21:25:42 · 4136 阅读 · 2 评论 -
Laravel使用事件Event
第一种创建方式:这种方式较为传统,按流程一步步创建,如果后续有新的监听,需要手动创建并进行关联第一步:创建一个事件,如用户登录php artisan make:event UserLogin第二步:为事件创建监听,如给管理员发送邮件(一个事件可以有多个监听)php artisan make:listener EmailAdminUserLogin --event=UserLogin第三步:系统中注册事件和监听的关系在 app/Providers/EventServiceProvider原创 2022-01-12 11:59:06 · 812 阅读 · 0 评论 -
Laravel之自定义路由
自定义路由文件可方便我们项目的模块化路由文件位置:routes框架默认的路由文件为 web.php我们可在同级目录创建自己的路由文件,例:admin.php路由文件创建后需注册才能生效,在 app/Providers/RouteServiceProvider.php 文件中 map() 函数增加:public function map(){ $this->mapApiRoutes(); $this->mapWebRoutes(); $this->原创 2021-09-12 00:22:13 · 365 阅读 · 0 评论 -
Laravel之数据库迁移文件
数据库迁移文件可快速方便的为我们创建数据表迁移文件位置:app/database/migrations创建迁移文件:php artisan make:migration 文件名(如create_user_table)运行所有未执行的迁移文件:php artisan migrate运行单个迁移文件,例:php artisan migrate --path=/database/migrations/2021_08_30_072323_create_user_table.php回原创 2021-09-12 00:14:36 · 692 阅读 · 0 评论 -
Laravel之模型观察者
模型观察者可以实现当绑定的模型发生增删改查等操作时做出相应的操作。模型观察文件位置:app/Observers创建模型观察者:php artisan make:observer TestObserver -m 监听的模型名模型观察者创建后需要注册,在 app/Providers/AppServiceProvider.php (服务提供者)文件中:public function boot(){ //注册监听 //被监听的模型(模型观察者) User::observ原创 2021-09-11 23:22:30 · 437 阅读 · 0 评论 -
Laravel框架之验证器
验证器用来验证传来的参数是否符合规定控制器中使用验证器,例如:public function store(Request $request){ $param = $request->all(); $rules = [ 'name' => 'required|max:50', 'file_id' => 'required|numeric', 'type' => 'required|numer原创 2021-09-11 16:59:56 · 513 阅读 · 0 评论 -
laravel框架之中间件
中间件文件存放位置:app/Http/Middleware创建中间件文件:php artisan make:middleware 中间件文件名使用中间件前需注册中间件:注册中间件文件位置:app/Http/Kernel.php在 $routeMiddleware 数组中定义中间件名及位置中间件可用做用户访问各功能路由前的验证,如验证登陆状态,用户状态等,合理使用中间件的使用非常重要;比如有一个活动,中间件可用来验证活动时间等(handel为内置函数):接下来是路由中使用中原创 2021-09-11 16:45:12 · 543 阅读 · 0 评论 -
Laravel框架之常用命令
创建控制器:php artisan make:controller 控制器名(可拼接文件夹如user/UserController)创建模型:php artisan make:model 模型名创建数据库迁移文件:php artisan make:migration 文件名(如create_user_table)执行数据库迁移文件:php artisan migrate (运行所有未执行的迁移)运行单个迁移文件: php artisan migrate --path=/datab..原创 2021-09-09 22:28:02 · 173 阅读 · 0 评论 -
PHP极光推送使用模板
php借入第三方推送:极光推送流程及使用先下载PHP版本的官方SDK:点击下载创建PHP极光推送类(CI框架为例):<?phpuse JPush\Client as JPush;require_once(APPPATH . 'third_party/JPush/autoload.php');class JGPush { private $app_key; //极光appKey private $master_secret; //极光秘钥 private $原创 2021-05-31 13:04:37 · 261 阅读 · 1 评论 -
PHP处理编码问题,编码转UTF-8
function ConvertToUTF8($text){ $encoding = mb_detect_encoding($text, mb_detect_order(), false); if($encoding == "UTF-8") { $text = mb_convert_encoding($text, 'UTF-8', 'UTF-8'); } $out = iconv(mb_detect_encoding($text,原创 2021-05-07 22:47:36 · 91 阅读 · 0 评论 -
PHP截取字符串特定字符前后内容
获取指定字符串前的内容$AAA = '123_45678';$result = substr($AAA,0,strrpos($AAA,"_"));echo $result;//输出123获取指定字符串后的内容$AAA = '123_45678';$result = substr($AAA,strripos($AAA,"_")+1);echo $result;//输出45678原创 2021-03-22 14:53:37 · 1231 阅读 · 0 评论 -
PHP RSA加密
例如在对接支付的业务中,我们的参数有时需要进行RSA加密,以下是php进行RSA加密的方法:private function _rsa_encryption($paramStr){ $pri_key = openssl_pkey_get_private($this->secret); openssl_private_encrypt($paramStr, $encryptData, $pri_key); openssl_free_key($pri_key); re原创 2021-01-30 11:53:24 · 298 阅读 · 0 评论 -
PHP正则判断字符串必须是数字和英文的组合
在设置密码的场景中,我们要对用户输入的密码做限制,以下是具体的限制内容和写法:1.长度不能小于8位2.必须是英文和数字的组合$pwd = $_POST['pwd'];if (strlen($pwd) < 8){ return '密码长度不能小于八位';}//全数字情况if(preg_match("/^\d*$/",$pwd)){ return '密码必须包含字母';}//全英文情况if(preg_match("/^[a-z]*$/i",$pwd)){原创 2020-12-26 11:54:40 · 1934 阅读 · 0 评论 -
PHP foreach实用写法
在过去使用foreach的写法中,通常是 foreach($data as $key => $val)来获取二维数组中一维数组的信息。下面的使用方法在很多场景中很实用:$data = [ ['996','icu'], ['a','b'], ['c','d'] ];//$p1 对应一维数组的第一个元素,$p2 对应一维数组的第二个元素foreach ($data as $key => [$p1,$p2]) { print_r($p1);}//运行结果:99原创 2020-12-11 16:39:00 · 338 阅读 · 0 评论 -
php 二维数组以某个元素值排序
现有二维数组:$array = array( array( 'id' => 1, 'total' => 12 ), array( 'id' => 2, 'total' => 13 ), array(原创 2020-11-26 10:29:49 · 277 阅读 · 0 评论 -
MySQL使用left join 无法统计数量为0的问题解决
现有两张数据表:表1:agent_table(代理表)ag_idag_name1张三2李四3欢仔表2:user_table(用户表)u_idu_nameu_ag_id1用户122用户223用户334用户43需求为查询每个代理下的用户数量;当我们使用连表查询'select ag.ag_name,count(u_id) as total fromagent_table ag left join原创 2020-11-18 15:25:50 · 2023 阅读 · 0 评论 -
MySQL数据库按时间分表的查询方法
分表规则:按月分表,每个月一张表,表的字段和类型都相同。 如 test_table_202011查询方法:$start_date = strtotime('2020-01-01 00:00:00'); //开始时间戳$end_date = strtotime('2020-07-01 23:59:59'); //截至时间戳$month_begin = date('Ym', $start_date); //开始年月$month_end = date('Ym', $end_date);原创 2020-11-16 15:15:04 · 4978 阅读 · 0 评论 -
PHP面试题汇总及相应解析
1. redis和memcached的区别和使用场景https://blog.csdn.net/u010398838/article/details/79995636区别1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;3、虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;4、过原创 2020-08-19 16:09:35 · 227 阅读 · 0 评论 -
线上支付支付宝个人支付接入流程详解
一直以为想做线上支付必须要有营业执照,害得我和很多个人开发者一样,绕了很多圈子。尝试过一些第三方的接入(不稳定,担心跑路)。原来支付宝是有个人支付接口的,利用支付宝的“当面付”接口就可实现个人版的线上支付,实时直接进入个人账户。我需要在网站上实现一个打赏功能,首先需要在 支付宝开发者中心 申请一个网页&移动应用,如图然后需要在能力列表添加“当面付”功能,签约的时候营业执照没有红色*...原创 2020-04-26 14:21:53 · 3276 阅读 · 0 评论 -
原生PHP利用QQ邮箱发送邮件
PHP发送邮件必不可少的是PHPMailer类库。PHPMailerPHPMailer 是一个封装好的 PHP 邮件发送类,支持发送 HTML 内容的电子邮件,以及可以添加附件发送,并不像 PHP 本身 mail() 函数需要服务器环境支持,您只需要设置邮件服务器以相关信息就能实现邮件发送功能。PHP扩展支持PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱...原创 2019-04-21 15:45:34 · 2335 阅读 · 2 评论 -
php自定义token及验证
生成token//用户名、此时的时间戳,并将过期时间拼接在一起$admin = $data['username']; //获取前台传来的用户账号$time = time();$end_time = time()+86400;$info = $admin. '.' .$time.'.'.$end_time;//设置token过期时间为一天//根据以上信息信息生成签名(密钥为 siasqr...原创 2019-04-14 15:52:51 · 4814 阅读 · 2 评论 -
MySQL update A set num=num+ ? where id=?是否存在并发的问题
在我们的实际开发中,往往会遇到更新数据字段的问题。如投票时,如果多人同时投票,是否存在在取数据并更新的时候,原始值是相同的,而后续的update操作会造成错误的数据?比如,表名A,字段名为 number,如下的SQL语句: 语句1:update A set number=number+ 5 where id=1;语句2:update A set number=number+ 7 where...转载 2019-04-14 18:35:21 · 5232 阅读 · 0 评论 -
ThinkPHP5实现发送邮件功能
ThinkPHP5实现发送邮件功能流程非常简单,引入phpmailer类库–>调用函数;所用到的核心文件就3个,我已整理好:链接:https://pan.baidu.com/s/1HhINe4-qsDP_9j0iz5KKIA提取码:u4mf把phpmailer文件夹放到TP5的extend文件夹下;然后在application/extra下新建email.php<?php...原创 2019-04-22 11:49:05 · 1044 阅读 · 0 评论 -
解决php操作redis报:Fatal error: Uncaught exception 'RedisException' with message 'Redis server went away'
在学习php操作redis的过程中,遇到了这个问题:Fatal error: Uncaught exception ‘RedisException’ with message ‘Redis server went away’ in D:\phpstudy\WWW\redis\demo.php:5 Stack trace: #0 D:\phpstudy\WWW\redis\demo.php(5)...原创 2019-04-28 17:11:36 · 13008 阅读 · 0 评论 -
原生PHP操作Excel将数据导入数据库
1.首先准备第三方类库PHPExecl;个人打包整理类库:http://www.glyxi.com/Download/PHPExcel.zip2.excel文件3.php代码(原生)<?php// 假定数据库用户名:root,密码:root,数据库:test_execl$con=mysqli_connect("localhost","root","root","test_ex...原创 2019-05-07 19:01:44 · 572 阅读 · 0 评论 -
PHP cURL使用代理IP爬取页面
话不多说直接上完整代码:$curl = curl_init();$user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";$url = "https://www.douban.com/"; //访问豆...原创 2019-07-19 15:28:23 · 674 阅读 · 1 评论 -
PHP cURL使用多线程爬取网页内容
把要爬取的网页的url放到一个数组里,本文以爬取豆瓣租房信息为例,在豆瓣搜索租房查看网页布局后再参考代码更好,具体代码如下:$j = -25;for ($i = 0; $i < ‘要爬取前几页的页数’; $i++) { $get_start = $j = $j +25; $urls[$i] = "https://www.douban.com/group/".‘城市分组名’...原创 2019-07-22 09:10:49 · 331 阅读 · 0 评论 -
php 实现图片质量压缩
php实现图片压缩,可以设置只压缩质量,不改变宽高,也可以设置改变宽高,压缩比是自定义的 /** * 调用部分 * $url:图片路径 $dst_img:图片保存路径及保存的文件名 $quality:图片的质量 为数字 越小图片的大小就越小 */ $url = '图片路径'; $dst_img = '图片保存路径 如:./img/test...原创 2019-07-26 18:35:11 · 1105 阅读 · 0 评论 -
php中 file_get_contents('php://input')的用法及与 POST 的区别
file_get_contents :— 将整个文件读入一个字符串在用php写接口的时候,通常会将请求的数据通过json的形式发送到指定的请求地址处,此时的file_get_contents(‘php://input’)主要是用来获取请求的原始数据,注意,此时数据的提交方式应为POST,并且enctype不等于”multipart/form-data”。看如下例子:提交表单内容如下 ...原创 2019-03-29 13:14:21 · 10954 阅读 · 0 评论