
PHP
文章平均质量分 73
alashan007
每天进步一点点
展开
-
PHP的DateTime类详解
PHP的DateTime类详解原创 2022-10-18 23:18:47 · 5446 阅读 · 0 评论 -
php生成密码及密码检验
php生成密码及密码检验原创 2022-03-23 16:12:26 · 1490 阅读 · 0 评论 -
ci4的验证示例
//控制器中在需要验证的地方public function yanzheng(){ if (!$this->validate([ 'email' => "required|valid_email", 'name' => 'required|max_length[3]', 'age' => 'less_than[30]' ])) { $this->output_json_error($this-.原创 2022-03-22 14:33:18 · 2781 阅读 · 0 评论 -
深入学习PHP中的JSON相关函数
官方文档: PHP: JSON 函数 - Manual https://www.php.net/manual/zh/ref.json.php在 PHP 中操作 JSON 其实非常简单,大家最常用的无非也就是 json_encode() 和 json_decode() 这两个函数。它们有一些需要注意的地方,也有一些好玩的地方。今天,我们就来深入地再学习一下。JSON 编码首先,我们准备一个数组,用于我们后面编码的操作。$data = [ 'id' => 1, 'name转载 2021-10-20 13:48:37 · 334 阅读 · 0 评论 -
用于多次尝试执行的伪代码
//用于多次尝试执行的伪代码,用游戏表示(一个游戏,从0到2中,随机选一个,选中2,则成功,三次都不中,则失败)function test_retry($retry = 3){ //替换为真实执行逻辑 $rand = rand(0, 2); $test = $rand == 2 ? true : false; $retry = $retry - 1; while ($test == false && $retry--) { .原创 2021-10-07 17:46:06 · 797 阅读 · 0 评论 -
PHP 对接阿里云短信服务完整流程
一、开通阿里云短信服务阿里云短信服务管理控制台二、获取阿里云访问密钥阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。您可以用它来签名 API 请求内容以通过服务端的安全验证。获取步骤:(一)打开 AccessKey 管理鼠标移至头像,选择 AccessKey 管理。(二)创建 AccessKey 密钥点击【创建 AccessKey】按钮即可自动创建。首次创建需要进行短信验证,创建完成后,将 AccessKey ID 和 AccessKey转载 2021-09-30 16:52:51 · 2638 阅读 · 1 评论 -
php 的 ?? 和?: 区别
$a = 0;//$a = 1;//$a = '';//$a = 'test';//$a = [];//$a = null;//$a = true;//$a = false;$echo1 = $a ?? 5;$echo2 = $a ?: 5;print_r('??的: ');print_r($echo1);echo '<br>';print_r('?:的: ');print_r($echo2);echo '<br>';经过测试的结论是:?? 是判断is.原创 2021-08-31 11:28:44 · 496 阅读 · 0 评论 -
PHP 23种设计模式介绍(三)---- 行为模式
策略模式介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换,用户还不需要知道其具体的实现主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。如何解决:将这些算法封装成一个一个的类,任意地替换。关键代码:实现同一个接口。应用实例:1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略。 2、旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。 3、JAVA .转载 2021-08-11 18:31:00 · 249 阅读 · 0 评论 -
PHP 23种设计模式介绍(二)---- 结构设计模式
适配器模式(Adapter)适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。我们通过下面的实例来演示适配器模式的使用。其中,音频播放器设备只能播放 mp3 文件,通过使用一个更高级的音频播放器来播放 vlc转载 2021-08-11 18:26:23 · 303 阅读 · 0 评论 -
PHP 23种设计模式介绍(一)---- 创建型模式
简介 设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 设计模式的六大原则:原则 解释 单一原则 (SRP) 一个类只做一件事 开放-封闭原则(OCP)转载 2021-08-11 18:21:44 · 304 阅读 · 0 评论 -
PHP使用array_unique对二维数组去重处理
array_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array_unique对二维数组去重处理例子。php 5.2.9 版本增加了array_unique对多维数组的支持,在处理多维数组是需要设置sort_flags参数一维数组的重复项:使用array_unique函数即可,使用实例如下:代码如下 复制代码 1 2 3 4 5 6 7 8 9 <?转载 2021-08-03 18:18:03 · 356 阅读 · 0 评论 -
哈夫曼树的应用之一
写文章的背景,近期学习数据结构和算法,学到哈夫曼树,听老师讲完,自己用PHP实现下加密和解密,做下记录,供自己学习用。(写的不优雅,先实现哈,后期有时间再优化)<?php/** * Created by PhpStorm. * User: sxt * Date: 2021/6/25 * Time: 9:37 * 使用哈夫曼算法进行字符串压缩加密 * 1.统计每个字符串出现的次数,构建权重数组 eg:[['key'=>'a','count'=>3],['key'=>.原创 2021-06-28 18:24:44 · 196 阅读 · 0 评论 -
深入理解PHP原理之变量分离/引用(Variables Separation)
首先我们回顾一下zval的结构:struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount; zend_uchar type; /* active type */ zend_uchar is_ref; };其中的refcount和is_ref字段我们一直都没有介绍过...转载 2021-06-24 16:24:39 · 153 阅读 · 0 评论 -
详解PHP实现异步调用的几种方法
浏览器和服务器之间是通过 HTTP 协议进行连接通讯的。这是一种基于请求和响应模型的协议。浏览器通过 URL 向服务器发起请求,Web 服务器接收到请求,执行一段程序,然后做出响应,发送相应的html代码给客户端。这就有了一个问题,Web 服务器执行一段程序,可能几毫秒就完成,也可能几分钟都完不成。如果程序执行缓慢,用户可能没有耐心等下去,就关闭浏览器了。而有的时候,我们更本不关心这些耗时的脚本的返回结果,但却还要等他执行完返回,才能继续下一步。那么有没有什么办法,只是简单的触发调用这些耗时的脚本转载 2021-06-18 18:53:53 · 1348 阅读 · 0 评论 -
深入理解PHP原理之foreach
foreach是PHP中很常用的一个用作数组循环的控制语句。因为它的方便和易用,自然也就在后端隐藏着很复杂的具体实现方式(对用户透明)今天,我们就来一起分析分析,foreach是如何实现数组(对象)的遍历的。本节内容涉及到较多编译原理(lex and yacc)的知识,所以如果您觉得看不太懂,可以先找相关的资料看看。我们知道PHP是一个脚本语言,也就是说,用户编写的PHP代码最终都是会被PHP解释器解释执行,特别的,对于PHP来说,所有的用户编写的PHP代码,都会被翻译成PHP的虚拟机ZE的虚拟转载 2021-06-18 12:22:18 · 937 阅读 · 0 评论 -
深入理解PHP原理之Opcodes
最近要给Yahoo的同事们做一个关于PHP和Apache处理请求的内部机制的讲座,刚好写了些关于Opcodes的文字,就发上来了,这个文章基于 Sara Golemon大师的《Understanding OPcode》Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL,举个例子,比如你写下了如下的PHP代码:<?php echo "Hello World"; $a = 1 + 1; echo $a; ?>...转载 2021-06-18 11:58:25 · 324 阅读 · 0 评论 -
strtotime的结合-1 month, +1 month, next month总结
经常会有人被strtotime结合-1 month, +1 month, next month的时候搞得很困惑, 然后就会觉得这个函数有点不那么靠谱, 动不动就出问题. 用的时候就会很慌...这不, 刚刚就有人在微博上又问我:鸟哥,今天是2018-07-31 执行代码:date("Y-m-d",strtotime("-1 month"))怎么输出是2018-07-01?好的吧, 虽然这个问题看起来很迷惑, 但从内部逻辑上来说呢, 其实是"对"的:我们来模拟下date内部的对于.转载 2021-08-12 17:54:11 · 475 阅读 · 0 评论 -
php解析url并得到url中的参数及获取url参数的四种方式
第一种、利用$_SERVER内置数组变量相对较为原始的$_SERVER['QUERY_STRING']来获取,URL的参数,通常使用这个变量返回的会是类似这样的数据:name=tank&sex=1如果需要包含文件名的话可以使用$_SERVER["REQUEST_URI"](返回类似:/index.php?name=tank&sex=1)第二种、利用pathinfo内置函数代码如下: 1 2 3 4 <?php .转载 2021-05-18 17:52:20 · 1319 阅读 · 0 评论 -
php中array_multisort()排序函数详解示例总结
1.array_multisort()这个函数可以对多个数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列 举例$a1 = ['c', 'b', 'a'];$a2 = ['b', 'c', 'a'];$a3 = ['b', 'a', 'c'];array_multisort($a1,$a2,$a3);print_r($a1);print_r('<br>');print_r($a2);print_r('<br>');print_r($a3);...原创 2020-09-02 18:15:24 · 555 阅读 · 0 评论 -
PHP 三元运算符
$a = $a ? $a : 1;//第一种$a = $a ? : 1;//第二种第二种写法从 PHP 5.3 引入,表示若 $a 返回值为真时,取 $a 的返回值。 此外,在 PHP7 中引入了??运算符$a = $a ?? 1;该表达式与第二种写法类似,可以达到相同的效果。但??运算符是以判断 $a 变量是否存在于上下文环境中作为条件,而三元运算符不具备这种判断。所以??运算符可 用于判断 $a 变量不存在的情况(也可用于数组)相当于isset(),而使用三元运算符判断一个未定义的变量.转载 2020-05-24 15:45:44 · 657 阅读 · 0 评论 -
ci的增删改查总结
1.查询构造器的写法class demo_model extends CI_Model{ public function __construct() { $this->load->database(); } //- 查询实例 public function select() { //SELECT ...转载 2020-04-29 15:39:28 · 225 阅读 · 0 评论 -
PHP中截取中文或者英文字符串
header("Content-type: text/html; charset=utf-8");$str = '世界你好,我爱你世界!';echo substr($str, 6); // 你好,我爱你世界!(一个中文三个字节)$len = mb_strlen($str, 'utf-8');echo mb_substr($str, 5, $len, 'utf-8'); //我爱你...原创 2020-04-01 10:50:30 · 405 阅读 · 0 评论 -
php的变量赋值总结
1.传值赋值:php变量其实就是一个地址的别名而已,如同$a就是一个内存中的地址的别名,比如是0x000011,$b就是另一个地址,$a = $b就是把0x000011地址内存里的数据取出来放到$b所指向的地址中,当unset一个变量以后,就会把这个变量名和地址之间的联系断掉,此时操作系统就会执行垃圾回收,把这个地址的数据清理掉。$a = 'a';$b = $a;$b = 'b';...原创 2020-04-01 00:00:17 · 991 阅读 · 0 评论 -
获取PHP文件后缀名方法
第一种:(思路用explode()函数分隔为数组,取最后一个) 1 2 3 $file = 'x.y.z.png'; $arr=explode('.', $file); echo $arr[count($arr)-1]; print_r(end($arr));print_r(array_pop($arr)); ...原创 2020-03-31 17:25:43 · 177 阅读 · 0 评论 -
PHP常用算法和数据结构示例
实例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...转载 2020-03-28 21:55:02 · 422 阅读 · 0 评论 -
PHP常用字符串函数
以下列出开发中常用的字符串函数,以供自己需要的时候查阅长度strlen($string):得到字符串长度字符串查找strpos($string, $search[, $offset]):在指定字符串中查找目标字符串第一次出现的位置 stripos($string, $search[, $offset]):忽略大小写的去查找 strrpos($string, $search[, $...原创 2020-03-26 15:47:13 · 179 阅读 · 0 评论 -
PHP的垃圾回收机制
在理解PHP垃圾回收机制(GC)之前,先了解一下变量的存储。php中变量存在于一个zval的变量容器中。结构如下: 类型 值 is_ref refcount zval中,除了存储变量的类型和值之外,还有is_ref字段和refcount字段。is_ref:是个bool值,用来区分变量是...转载 2020-03-25 16:02:21 · 233 阅读 · 0 评论 -
常用正则示例
一、校验数字的表达式数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$ 正数、负数...原创 2020-03-10 21:33:26 · 250 阅读 · 0 评论 -
PHP错误和异常
1.PHP常见的错误级别Deprecated 最低级别错误,程序继续执行Notice 通知级别的错误 如直接使用未声明变量,程序继续执行Warning 警告级别的错误,可能得不到想要的结果Fatal error 致命级别错误致命级别错误,程序不往下执行parse error 语法解析错误,最高级别错误,连其他错误信息也不呈现出来E_USER_相关错误 用户设置的相关错误...原创 2019-12-25 17:53:50 · 196 阅读 · 0 评论 -
无限极分类
<?php//无限极分类demoheader("Content-type:text/html;charset=utf-8");$dir = dirname(__FILE__);$dbh = new PDO('mysql:host=localhost;dbname=localhost_test', 'root', '');$dbh->query('set names utf...原创 2019-12-25 14:22:35 · 178 阅读 · 0 评论 -
php生成条形码
条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。这里采用php实现,支持大多数的码制。条码长度Code128,Code39 Extended, Code93 Extended 支持全全ASCII码。Code128有A、B、C三种字符集,每种字符集支持一部分,大致是这样的,A字符集支持支持AZ 26个大写字母、09 ...转载 2019-12-25 11:23:52 · 1064 阅读 · 0 评论 -
phpexcel常用功能总结和代码示例
1.下载地址 https://github.com/PHPOffice/PHPExcel2.dbconfig.php配置文件$phpexcel = [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => '', 'database' => 'localhost_...原创 2019-12-20 13:18:24 · 322 阅读 · 0 评论 -
php生成简单水印
1.文字水印/** * 文字水印函数 * @param string $filename 图片地址 * @param string $text 文字文案 * @param int $position 水印位置(1左上角,2左下角,3中间) * @param int $red 红色颜色比重 * @param int $green 绿色颜色比重 * @param int ...原创 2019-12-16 16:46:47 · 318 阅读 · 0 评论 -
php生成缩略图封装
<?php/** * 缩略图实现封装 * @param string $file_name 源图片路径 * @param int $type 缩略方式(1等比例缩放,2在限制宽高大小内实现等比例,默认为1) * @param int $percent 缩放比例(type为1时可选参数,0.1-4,默认为1) * @param int $dst_w 限制最大宽(type为2...原创 2019-12-16 15:24:42 · 188 阅读 · 0 评论 -
php唯一数和随机数
1.内置函数print_r(mt_rand(1000,9999));print_r(rand(1000,9999));print_r(uniqid('thumb_'));2.函数/** * 获取唯一值 * 长度 $len * @return bool|string */function getUnique($len = 10){ return substr(m...原创 2019-12-16 15:17:15 · 625 阅读 · 0 评论 -
验证码总结
1.验证码封装<?php/** * 验证码封装 * @param int $type 类型1数字 2字母 3数字或字母 * @param int $leng 长度 * @param int $pixel 干扰点 * @param int $line 干扰线段 * @param int $arc 干扰圆弧 * @param int $snow 干...原创 2019-12-13 19:21:29 · 220 阅读 · 0 评论 -
php目录和文件操作函数汇总及示例
一、判断普通文件和目录 1.is_file()//判断给定文件名是否为一个正常的文件 2.is_dir()//判断给定文件名是否是一个目录二、文件的属性 1.file_exists()//检查文件或目录是否存在 2.filesize()//取得普通文件大小 3.is_readable()//判断给定文件名是否可读 4.is_writable()//...原创 2019-12-10 20:57:34 · 377 阅读 · 0 评论 -
cookie操作封装
//cookie操作类封装class CustomCookie{ static private $_instance = null; private $expire = 0; private $path = ''; private $domain = ''; private $secure = false; private $httponly =...原创 2019-11-25 16:14:26 · 223 阅读 · 0 评论 -
Sphinx
什么是Sphinx为什么要用Sphinx?原因1: MySQL不支持中文全文检索,模糊查询(like)慢原因2: sphinx支持中文全文检索,并且支持分词高亮什么是Sphinx就是一个软件,用来代替MySQL全文检索sphinx的特性强,快特性高速的建立索引(峰值达10M/s)高性能的搜索(2-4G的文件数据上,平均每次检索0.1秒左右)可处理海量数据...转载 2019-11-13 20:17:44 · 378 阅读 · 0 评论 -
页面静态化
1.静态化好处(一些变化不频繁,访问量大的页面适合做静态化) a.提升页面的相应速度,减少服务器的压力。 b.从网站的优化上来说,搜索引擎更喜欢静态网页,也容易进行抓取,SEO排名也会更高 c.静态网页没有查询数据库,安全性高些。同时稳定性也更高。2.静态化的缺点 a.交互差。 b.占用磁盘空间,开发难度大,不利于维护和管理。3....原创 2019-11-13 12:06:14 · 189 阅读 · 0 评论