php
RainSerein
这个作者很懒,什么都没留下…
展开
-
php中使用Imagick转换PDF第一页为PNG图片并且识别出二维码
经过在实际项目中测试,当使用php版本为7.4.3时需要使用对应的扩展版本为khanamiryan/qrcode-detector-decoder: 1.0.5.2,以下为在项目中安装使用方法。原创 2023-10-10 10:37:54 · 616 阅读 · 1 评论 -
php中根据当前节点数据获取根节点数据的方法
有时候需要进行数据遍历,由当前节点去查询根节点数据,下面介绍一种递归查询方法。/*** 获取当前节点的根节点,无论有多少层,都可以查到根节点* @param $array 分类表中的所有的分类数据* @param $id 当前所要查询的id//定义一个静态的变量数组 static $data = array();原创 2023-04-28 09:28:43 · 221 阅读 · 1 评论 -
php中使用最大余额法解决百分比计算相加不等于100%的问题
在开发项目的过程中有时候需要进行计算百分比,例如计算饼状图百分比。有时候在计算的过程中常规四舍五入计算会发生所有计算的值相加不等于100%的情况。if(!/*** 最大余额法,解决百分比计算相加不等于100%(扇形/饼图百分比使用的此算法)* @param array $valueList 二维数组 [['value' => 1],['value' => 2],['value' => 3]]* @param string $contKey 要统计的字段。原创 2023-01-30 16:57:36 · 1326 阅读 · 0 评论 -
php中分层数据转树结构(数据不去重)并且带有level层级
在项目开发的过程中有时候需要对数据进行数据转换,这里介绍一种对层级数据转换为树结构数据并且不对重复数据进行去重,并且带有level层级字段。if(!/*** 分层数据转树结构(不去重)并且带有level* @param [type] $data 列表数据* @param string $child 子级* @param integer $pid 父级id* @param integer $level 层级} }使用方法直接进行调用即可,id和pid表示父子级关系。原创 2023-01-30 16:38:15 · 210 阅读 · 0 评论 -
php中使用递归算法获取层级树当前节点下的无限级父节点
既然有从父级节点获取所有的子级节点,当然也有从子级节点获取所有的父级节点,思路都是使用递归算法。原创 2022-07-04 10:15:49 · 723 阅读 · 0 评论 -
php中使用递归算法获取层级树当前节点下的无限级子节点
有时候在项目开发的过程中会遇到查询层级树某一个节点下的所有子级节点的问题,这里记录一种递归算法,快速获取所有的子级节点数据到一个一维数组中。原创 2022-07-04 10:01:10 · 955 阅读 · 0 评论 -
在php的开发环境中如何调取WebService?
一.前言:大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分。但是不得不承认的是WebService真的是一门新兴和有前途的技术,那么WebService到底是什么?何时应该用? 当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的瘦客户端应用程序,一种是基于浏览器的富客户端应用程序(RIA),当然后一种技术相对来说更加的时髦一些(如现在很流行的Html5技术),这里主原创 2022-05-17 16:46:38 · 1476 阅读 · 0 评论 -
MySQL中的正则表达式
前言有时候使用MySQL进行数据库查询数据的时候,like查询存在局限性,这时候就可以使用MySQL中的正则表达式查询的方式。正则表达式是用来匹配文本的特殊的串(字符集合),将一个模式(正则表达式)与一个文本串进行比较。从文本文件中提取电话号码查找名字中间带有数字的文件文本块中重复出现的单词替换页面的URL为这些URL的实际链接(一个或两个正则表达式)LIKE和REGEXP的区别LIKE匹配整个列(like是模糊查询),如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不原创 2022-04-15 10:44:32 · 4922 阅读 · 1 评论 -
php中根据数字月份返回月份的英文缩写
前言在项目开发的过程中有时候需要对月份进行英文转换。 /** * 获取月份缩写 * @param string $month 月份 */ function get_month_abbr($month) { $month = (int) $month; $monthEng = [ 1 => "Jan", 2 => "Feb", 3 =>原创 2021-09-14 14:24:05 · 1102 阅读 · 0 评论 -
php中生成随机的6位邀请码
前言在系统开发的过程中有时候需要在用户注册的时候输入邀请码,这里分享一种快速生成邀请码的方法。 /** * 生成邀请码 * @param unitCode */ function create_invite_code($unitCode, $len = 3) { $arr = ["1", "2", "3", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H",原创 2021-09-14 14:10:36 · 1678 阅读 · 0 评论 -
php中时间戳转换为毫秒以及格式化时间
前言有时候需要对时间戳进行操作,比如获取13位毫秒级的时间戳或者对时间戳进行格式化时间。 /** * 转化时间为毫秒时间戳 * @param int|string $time 时间戳|日期 * @return int */ function get_time($time) { if (is_numeric($time)) { return (int) str_pad($time, 13, "0", ST原创 2021-09-14 13:58:25 · 2868 阅读 · 0 评论 -
php中在二维数组中根据值返回对应的键值
前言在进行数组操作的时候有时候需要根据数组中的值找寻对应的键值,这里分享一个方法,可以快速的根据二维数组中的值找寻对应的键值。 /** *根据值返回对于的key 键名 *@param $search[string] 搜索的值 *@param $array[array] 被搜索的数组 *@return 找到返回键名 未找到返回false */ function deep_get_key($search, $arr) {原创 2021-09-14 13:53:11 · 1187 阅读 · 0 评论 -
php中计算树状结构数据中的合计
前言在项目开发的过程中有时候遇到树状结构数据计算从最末级节点依次计算到根节点中所有数据值的和,也就是计算子级节点数据相加等于父级节点,以此类推到根节点。下面的方法使用到了递归查询计算的方法。树状结构数据示例:$tree = [ 0 => [ "Code" => "1", "PCode" => "", "num" => 1, "Price" => 2, "children" =>原创 2021-09-10 16:47:57 · 438 阅读 · 0 评论 -
php中的二维数组去重
前言有时候在数据库进行join关联查询数据的时候会查询出一些重复的数据需要进行手动去重操作,避免返回到列表中出现重复的数据。/** * 1.删除二维数组中相同项的数据,一般用于数据库查询结果中相同记录的去重操作 * 2.重置一下二维数组的索引 * @param array $_2d_array 二维数组,类似: * $tmpArr = array( * array('id' => 1, 'value' => '15046f5de5bb708e'), *原创 2021-09-07 17:34:53 · 3255 阅读 · 0 评论 -
php中的数字金额转换大写数字
前言有时候需要进行数字金额与大写汉字金额的转换,网上虽然有很多的方法,但是大多都很混乱,这里整理一个现在在使用、感觉还不错的方法。 /** * 数字金额转换大写数字 * @param [float] $num 数字类型 * @return void */ function convert_case_number($num) { //转换数字类型 $num = (float) $num; //判断原创 2021-09-07 16:55:09 · 406 阅读 · 0 评论 -
php中判断版本号是否连续
前言在做excel数据导入到数据库表的过程中需要验证excel中的版本号一栏中的版本号是否连续。版本号格式:1,1.1,1.2,1.2.1,2,2.1,2.2,2.2.1(正确)版本号格式:1,1.1,1.1,1.2.1,2,2.1,2.2,2.2.1(错误)版本号格式:1,1.2,1.1,1.2.1,2,2.2,2.1,2.1.1(错误)这里需要用到php中的字符串函数,strpos,strrpos,substr。 /** * 判断编号是否连续,编号格式:1,1.1,1.2,1原创 2021-09-07 16:46:05 · 163 阅读 · 0 评论 -
php中计算两个日期之前相差多少天、月、年
前言最近在开发项目的过程中遇到需要计算两个日期之间相差了多少天、多少月、多少年,下边总结了一种计算方法,供大家参考。解决办法/** * 计算两个日期之前相差多少天/月/年 * @param string $start_time 开始日期 * @param string $end_time 结束日期 * @param int $type 类型(1:相差天数,2:相差月数,3:相差年数) */function get_count_form_date($start_time, $end_time原创 2021-07-01 15:26:57 · 1029 阅读 · 1 评论 -
php中删除指定文件夹下的内容
前言在之前做远程文件下载到本地然后打包下载的功能中存在文件重复的问题,导致下载的压缩中有之前下载过的文件,下边介绍一种方法可以在下载之前删除指定文件夹中的文件,保证每次都是最新的文件。解决方法 /** * 删除指定文件夹下的内容 * @param $dirname * @param boolean $self * @return void */ function do_rmdir($dirname, $self = false)原创 2021-06-22 17:00:37 · 313 阅读 · 3 评论 -
php中在树状数据结构中获取从子级节点到根节点的所有节点数据
前言在处理树状结构数据中,有时候需要查询从子级节点到根节点的所有节点数据。例如:$tree = [ [ "id" => 1, "pid" => 0, "title" => "湖北省", "children" => [ [ "id" => 2, "pid" => 1, "title原创 2021-06-21 17:00:59 · 761 阅读 · 0 评论 -
php中树形结构转数组(拉平树结构,保留上下级排序)
前言在做php中树形结构转数组的功能中有时候需要把树结构直接拉平按照树结构的顺序按照由上到下排列,这时候就需要另外一种处理方法了。解决办法//树结构数据转数组(拉平树结构,保留上下级排序)function treeToList($arr, $pid = 0){ $array = array(); foreach ($arr as $val) { $inData = array( "key" => $val["key"],原创 2021-06-17 16:00:18 · 680 阅读 · 1 评论 -
php中获取汉字拼音大写首字母
前言在做项目开发的工程中遇到了要把一串中文字符串返回大写首字母的功能,在借鉴网上其他开发者的方法以后整理了一下最好用的一种方法。问题描述需要把【下游堆石区】转换成【XYDSQ】。方法示例 if (!function_exists('getfirstchar')) { /** * 获取汉字拼音大写首字母 * @param [type] $str * @return void */ funct原创 2021-06-17 15:30:27 · 322 阅读 · 0 评论 -
php中通过集合collect的方法来实现把某个值插入到数组中指定的位置
需求分析最近在项目开发的过程中遇到列表中的排序要求按照能上下拖动的方式进行重新排序,例如:A,B,C,D,E。现在要把F插入到C后边,然后按照A,B,C,F,D,E进行排序。解决方案经过各种方法的尝试,发现通过集合collect中的一些方法可以快速的实现这个功能。Thinkphp框架中和PHP原生项目可以直接通过composer安装。Laravel8中自带集合Illuminate\Support\Collection方法而可以直接进行使用。//安装集合collect方法composer requ原创 2021-06-17 15:10:26 · 1179 阅读 · 0 评论 -
php中过滤字符串只保留汉字、字母、数字,去除空格和其他字符
需求:根据用户输入内容,通过正则过滤出字符,输出汉字、字母、数字,去除空格和其他字符。例如:"T EST-001- 测试 合同编号-9 99-co nect-测试测试111 ",过滤空格和其他字符以后,输出:TEST001测试合同编号999conect测试测试111。分析:采用正确的正则表达式方法,过滤出字符串之中的空格和其他字符,只输出汉字、字母、数字。代码实现 function get_filter_str($str) { preg_match原创 2021-05-17 10:38:45 · 2331 阅读 · 0 评论 -
php中判断版本号是否正确
需求:根据用户输入内容,通过正则判定该内容是否符合规定的版本号格式正确版本号格式为:以数字开头和结尾,数字之间可以用 `.` 连接,但不能连续出现两个及两个以上的点正确版本号示例: 0 0.1 0.1.1 1 1.1 1.1.1 2 2.1 2.1.1 ... 错误版本号示例: 0.. 0..1 1..1 1.0. 1.0..2 ...分析:1.首先对传入的字符串进行是否有两个及以上连续的点出现,若有则版本号不正确,若没有则进入第二步判断。2.首先以 1原创 2021-05-17 10:15:06 · 900 阅读 · 1 评论 -
php中sprintf使用bug
前言最近在用sprintf函数进行四舍五入数据处理的时候的时候,发现一个问题。echo sprintf('%.2f',123.455); //123.45echo sprintf('%.2f',12.455);//12.46上面的sprintf(’%.2f’, $str)是被常认为的四舍五入,但是两个结果截然不同,按照正常情况应该是是输出X.46才对,怎么一个X.46一个X.45呢。sprintf(’%.2f’, $str) 的“四舍五入”输出的问题在php中sprintf经常被用来格式字符串原创 2021-04-12 10:14:10 · 756 阅读 · 0 评论 -
php中截取字符串返回前边部分或者后边部分
前言在项目开发的过程中有时候需要进行字符串的截取并且根据情况需要返回前边部分后者后边部分。方法<?php$a = '123_abc';$front = substr($a, 0, strrpos($a, '_'));$after = substr($a, strripos($a, '_') + 1);echo $front; //输出123echo $after; //输出abc...原创 2021-03-19 09:55:25 · 756 阅读 · 0 评论 -
Windows10+PHP7.4.3环境下安装imagick扩展和imagemagick
前言最近在项目开发的工程中更换了 php 的版本为 php7.4.3,需要重新进行 imagick 扩展和 imagemagick 的安装,以便进行处理文件的相关操作。1.查看当前 php 的版本通过访问 http://127.0.0.1/phpinfo.php 进行 php 版本的查看。2.安装 imagick 扩展扩展的下载地址为:https://windows.php.net/downloads/pecl/releases/imagick/3.4.4/将压缩包下载下来以后进行解压,将原创 2021-03-10 13:36:40 · 2620 阅读 · 1 评论 -
如何修改php的版本
前言在项目开发的过程中有时候需要切换cli中php的版本,那么该如何进行切换呢?1.查看php的版本2.修改计算机环境变量中php中的路径修改为所需要的php版本即可,路径指向php的安装路径。3.重启计算机,不然大概率不会立即生效。重启后查看php的版本。...原创 2021-03-10 09:50:22 · 1809 阅读 · 0 评论 -
opcache缓存设置
前言在 php7.4 版本中有缓存设置,在项目开发的过程中会影响代码调试。opcache.enable 启用操作码缓存,默认为“1”如果禁用此选项,则不会优化和缓存代码。 在运行期使用 ini_set() 函数只能禁用 opcache.enable 设置,不可以启用此设置。 如果在脚本中尝试启用此设置项会产生警告。opcache.enable_cli 仅针对 CLI 版本的 PHP 启用操作码缓存。通常被用来测试和调试。opcache.revalidate_freq=0 检查脚本时原创 2021-03-05 14:25:31 · 991 阅读 · 0 评论 -
php中使用Fpdf、Fpdi类库合并PDF文件或者合并PNG图片生成新的PDF文件
前言最近遇到了需要把多个PDF文件合并成一个PDF文件、把PNG格式的图片合并生成一个新的PDF文件的需求。解决办法是采用Fpdi类库来实现。 * composer命令安装:composer require setasign/fpdf * composer命令安装:composer require setasign/fpdi<?php//档案管理中的公用方法//引入加载PDF合成多个PDF的扩展vendor('setasign.fpdi.autoload');use setasig原创 2021-03-01 15:28:00 · 1993 阅读 · 0 评论 -
php中使用Imagick扩展方法转换PDF格式的文件为PNG图片
前言:需求中需要对PDF文件做一下操作把PDF文件转换成PNG图片方便后续操作。//pdf文件转png图片function pdf2png($pdf, $path, $page = 0){ $im = new Imagick(); $im->setResolution(120, 120);//设置图像分辨率 $im->setCompressionQuality(100);//压缩比 $im->readImage($pd原创 2021-03-01 13:41:14 · 367 阅读 · 0 评论 -
php中使用Imagick扩展方法转换TIF格式的文件为PNG图片
前言:最近遇到在页面端预览TIF格式的文件,直接没有办法预览,需要转换成图片的格式进行预览,经过测试以后转换成PNG格式的图片效果最好。//tif文件转png,其实就是使用了Imagick转换了一下文件的格式。//$filename tif文件的地址。function tif2png($filename){ $filepath = pathinfo($filename)['dirname'] . '\\'; $filename = pathinfo($filename)['base原创 2021-03-01 11:51:48 · 688 阅读 · 0 评论 -
php中的接口 interface 和实现 implement
接口 interface 和实现 implement 的初步理解接口类使用关键字 interface 来定义,且类中所有方法都是抽象方法,修饰符为 public,无声明变量。类通过使用关键字 implement 来实现 interface 中的方法。interface User{ function getGender(); function getLanguage();}class Male implements User{ function getGender原创 2020-11-11 15:52:32 · 480 阅读 · 0 评论 -
php中在ie浏览器下post、get传递中文参数乱码
前言最近遇到过在 ie 浏览器中通过 post 或者 get 进行传递参数的时候出现中文乱码的问题。方法介绍使用 mb_detect_encoding 检测编码。mb_detect_encoding 检测字符的编码,string mb_detect_encoding ( string $str [,mixed $encoding_list = mb_detect_order() [,bool $strict = false ]])这个函数有三个参数分别是:1.str:待检查的字符串。2.en原创 2020-11-04 11:55:52 · 618 阅读 · 0 评论 -
php中判断文件夹是否存在,不存在则新建
介绍:在项目开发过程中有时候需要进行指定的文件夹内的文件读取或者生成,这时候需要先进行判断文件夹是否存在,如果不存在则新建。方法://判断文件夹是否存在,没有则新建。if (!function_exists('mkdirs')) { function mkdirs($dir, $mode = 0777) { if (is_dir($dir) || @mkdir($dir, $mode)) { return true; }原创 2020-09-29 10:53:48 · 1789 阅读 · 0 评论 -
php中上传大文件的方法
介绍:在项目开发的过程中有时候会用到上传大文件或者视频的方法,下面介绍两种大文件上传的方法。1.Thinkphp5框架中采用前后端不分离的同源模式,前端使用 webuploader 分片上传的方法,后端使用分片上传。 /** * 大文件上传 * @return \think\response\Json */ public function maxFileUpload() { header("Expires: Mon, 26 Jul 19原创 2020-09-27 15:30:33 · 408 阅读 · 0 评论 -
php中获取一个时间戳到当前时间的月份列表
介绍:有时候需要获取某一个时间戳到当前时间的月份列表方便按照月份去查询。/** * 获取从开始到当前时间的月份列表 * @param $startMonth 月份时间戳 * @return array */function getTimeLine($startMonth){ //定义一个空的数组 $timeline = array(); $StartMonth = date("Y-m-d", $startMonth); //开始日期 $EndMonth = da原创 2020-09-24 10:52:49 · 764 阅读 · 0 评论 -
Thinkphp5中的软删除
前言:在实际项目中,对数据频繁使用删除操作会导致性能问题,软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复。1.修改或者添加数据库字段Thinkphp5 中默认的该字段是 delete_time,创建表的时候需要添加字段 delete_time。例如:创建一个 user_list表。 CREATE TABLE `user_list` ( `key` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户表原创 2020-09-22 16:49:52 · 1006 阅读 · 0 评论 -
Thinkphp中使用faker创建随机数据
前言:数据填充,我们在创建完数据表格后往往需要做一些假数据,在 Thinkphp 中我们可以通过composer 来安装这个拓展库。安装Faker在项目所在的文件夹中打开命令行输入以下命令:composer require fzaninotto/faker运行以后会在vendor文件夹下生成在项目中的实际使用方法:<?phpnamespace MyFaker;//use会调用类注册, 前提是你得先导入相应的类注册方法 (autoload.php)use Faker\Factory原创 2020-09-17 16:42:47 · 467 阅读 · 0 评论 -
使用think-migration进行数据库迁移
前言:在thinkphp5中提供了数据迁移工具 (think-migration),开发者可以使用版本控制管理他们的数据库迁移。文档:官方文档安装方法:首先通过 composer 安装:composer require topthink/think-migration注意事项,不支持修改文件配置目录。在命令行下运行查看帮助,可以看到新增的命令。php think migrate migrate:breakpoint Manage breakpoints migrate:cre原创 2020-09-17 16:13:20 · 1913 阅读 · 3 评论