php
Day____Day____Up
有趣的谐音梗:http://xyg.nice100.net/
展开
-
php怎么用变变量访问多维数组, 使用字符串访问数组.
有时我们想这样访问数组$a的元素```$varStr = "$a['a']['a_a']";```.今天就做罗列下实现的两大类方法:1.使用eval()```$varStr = "$a['a']['a_a']";$val = eval("return $varStr;");```2.一层层遍历取值```$vars = function($str) use ($vars){ if (!preg_match_all('#\[[\"\'](.+?)[\"\']\]#', $str, $...原创 2022-03-20 14:27:14 · 524 阅读 · 0 评论 -
php中使用DOMDocument类对xmL文件进行操作,新增加的元素没有被格式化,怎么办?
php中处理xml格式的数据,一般都会用DOMDocument类.不过使用中发现往格式化的xml文件新增元素时新增元素没有被格式化(即有缩进换行). 解决办法也很简单,即是导入xml时,不要保留空白符.例子如下:```<?php$doc = new \DOMDocument();$doc->formatOutput = true;$doc->preserveWhiteSpace = false;//这是关键$doc->loadXML($xmlStr);$doc->原创 2022-03-17 10:48:38 · 519 阅读 · 0 评论 -
mac上使用php时报错dyld: Library not loaded: /usr/local/opt/tidy-html5/lib/libtidy.5.dylib, 怎么解决dyld: Libra
>之前php是通过brew安装的,一直用得很好,最近brew update以下,再使用发现报了这个错,dyld: Library not loaded: /usr/local/opt/tidy-html5/lib/libtidy.5.dylib.一通找,发现如下方案都不得行.网上有说重装tidy: `brew reinstall tidy-html5`, 重装tidy后还是一样的报错另一个方案是软连接, 其实在/usr/local/opt/tidy-html5/lib/下是有个libtidy.5.原创 2022-01-30 10:37:52 · 12850 阅读 · 0 评论 -
php怎么判断两个日期是否在同一周内
其实非常简单利用date()函数一行代码搞定.封了个函数放在github上, [链接:https://github.com/miracle2017/code_snippet/blob/c81976d3251170de1cd54db2e14def9d66431b6b/code.php#L56](https://github.com/miracle2017/code_snippet/blob/c81976d3251170de1cd54db2e14def9d66431b6b/code.php#L56)(fr原创 2022-01-30 10:35:51 · 585 阅读 · 0 评论 -
PHPExcel导出时报错Worksheet!L904 -> Formula Error: An unexpected error occured
首先,L904的含义,我们应该清楚,这样有助于我们更快定位问题.这个含义表示的是L9列,04行有问题.其次,formula error说明, 你在这个单元格中使用了公式, 而这个公式是不合法的.所以你应该检测下公式的格式.可能你会觉得自己并没有使用公式.但是只要你的内容是以=开头,那么导出时会认为这个单元格内容是个公式,博主就是这种情况触发的这个错误.所以导出的内容还是需要做下过滤的,不能以=开头.就像我们平时使用excel一样,如果使用了=开头, 那么=后面期望跟的就是一个公式,若是其他内容将会产生错原创 2021-05-19 00:33:19 · 782 阅读 · 0 评论 -
答案为是或否的选项, 是使用一个复选框checkbox还是两个单选框radio? 哪个更合适? 为什么?
对于选项的答案为是/否的选项, 大家是会用一个checkbox还是两个radio框? 哪个会更合理? 为什么?最近看到一篇文章是关于这个问题的,发现挺有意思的.为此做个总结记录.有人在Twitter上发布该问题的讨论,摘选了些比较有用的观点. 相信在看过这些别人的观点后, 你会更清楚在什么情况下使用哪种类会更加合适.以下为一些用户的评论观点:对于checkbox, 如果他没被选中, 那么有两种可能:一个是用户就选择否,一个是用户落了该选项. 而对于radio,否就是意味着用户选择了否 如果我无法.原创 2020-12-04 00:32:38 · 457 阅读 · 0 评论 -
如果优雅最简单快速地将二维数组转换为一维数组, 或者将多维数组转换为一维数组
怎么最简单,快速将多维数组展开平铺为一维数组? 以下为博主的总结供参考:分为平铺展开的深度为2和全部平铺展开的:先假设有个待展开数组:$arr = [ 'a' => [ 'a1' => 'nice100.net', 'a2' => 'good', ], 'b' => [ 'b1' => [ 'b11' => 'nice', 'b12'...原创 2020-12-03 00:49:36 · 769 阅读 · 0 评论 -
php的urldecode无法还原出原来的url
首先, 看下urlencode的官方说明: 大致意思是将除英文和数字以及-_ 外的字符都转换为%##格式, ##表示两个hex码, 此外还有个特殊就是空格转换为+.反之,urldecode就是将%##格式转换为对应的字符, 同样+转换为空格.知道这两个函数定义后, 我们就知道一个url被urlencode多少次,如果要还原就要相应的用几次urldecode.如果相应的urldecode次数不够则就无法还原到原来的url. 当url无法还原时, 可以考虑会不会有这种情况.总结: 使用几次urlen原创 2020-07-14 18:07:55 · 829 阅读 · 0 评论 -
php使用正则时提示unknown modifier )
php使用正则提示 Unknown modifier ')' , 感觉很奇怪正则中括号应该是认识的啊, 以下是我使用正则的代码:preg_split('|(\t| )+|', $lineData);最后发现用/界定符或者#时,就能正常工作,改完后的代码:preg_split('/(\t| )+/', $lineData);总结: 怎么看来正则中使用 | 做界定符时, 里面如果使用括号那么就会报如上的错误, 所以用 / 或者 # 或者其他代替....原创 2020-06-03 18:56:19 · 988 阅读 · 0 评论 -
idea,phpstorm的快速文档(函数说明文档quick document)提示突然都翻译成中文的了.
php内置函数快速文档都是英文的, 如下但是不知道修改什么配置导致最近使用时都什么变成中文的了(话说变成中文是好事,但是tm有的翻译不通顺啊) 如下最后也是自己瞎摸了一遍配置才找到的. 原因就是现在新版的 translation插件有一个翻译文档的功能并且默认时开启的. 关闭方法如下: 打开phpstorm配置框, 找到translation插件配置, 将翻译文档前的打勾去掉最后保存即可. (下图是mac上的路径, window的配置貌似是叫setting. 同时不同版本的idea可能配置路原创 2020-05-19 17:17:25 · 840 阅读 · 0 评论 -
php快速将二维数组的中某个值提为数组键值,array_column的妙用.
举个栗子://假设今有数组如下$arr = [ [ 'id' => '100', 'name' => 'boy', 'val' => 'handsome', ], [ 'id' => '200', 'name' => 'girl', 'val' => 'beautiful', ],];//期望将name提为键值, 操作如下$re =原创 2020-05-19 12:22:03 · 720 阅读 · 0 评论 -
php创建多级目录报错,如permission deny;所以自己写了通用的创建多级目录的函数
首先, php创建目录的函数mkdir($dir, $mod , $recursive),该函数也可以递归创建多级目录. 只要在第三个参数$recursive传入true就行.而$mod参数是定义新创建目录的权限值(八进制).但是我们设置了$mod后实际创建的目录的并非与我们预期一样, 因为最终目录的权限值 = $mod - umask; 而这个umask通常为022, 所以有些情况下, 你创...原创 2020-01-10 13:38:55 · 213 阅读 · 0 评论 -
php获取指定子字符串的所有位置以及匹配的内容, 非常简单实用
假设有个字符串s, 一个要寻找的字符串a, 要怎么样快速找出所有匹配的内容以及位置, 其实这些官方已经有了(手册还是要好好看看啊 )preg_match_all第四个参数传入PREG_OFFSET_CAPTURE就会记录位置; 下面举个栗子//加上了PREG_OFFSET_CAPTURE参数, 在匹配到内容的同时还会记录这个匹配到的位置//如下例子所有出现的位置就上$m[0][1]和$m...原创 2019-12-04 19:18:31 · 1249 阅读 · 0 评论 -
php提取html的dom树, 自己封装的一个轻便函数, 也支持对匹配到的内容进行替换
假设我们需要提取html的某块dom树时,特别dom树的结构比较深时, 正则等其他办法就有点无能为力了, 虽然php官方有个强大dom对象可以进行对xml复杂操作, 同时也有很多优秀的第三方库如 querylist, 但是有时候自己要的功能并需要那么多, 在引入这些东西有点大材小用. 为此自己原始的撸了一个简约函数github地址:https://github.com/miracle2...原创 2019-12-04 16:25:19 · 346 阅读 · 0 评论 -
php的mb_detect_encoding函数无法检测出中文编码,完美解决
mb_detect_encoding()函数是用于检测得定字符串的编码的,当我们使用这个函数检测中文时有时候会出现误报的现象, 如检测出为utf-8,但是他实际是gb2312. 为此我们按如下做法得到准确结果$encoding = array('UTF-8', 'ASCII', 'GB2312', 'GBK');//$encoding参数的作用是指示mb_detect_encoding...原创 2019-12-02 14:32:49 · 3096 阅读 · 0 评论 -
js根据给定字符串生成二维码, 并提供下载功能, 非常容易使用, 可直接套用.
线上预览地址:http://47.100.232.201/github/qrcode/examples/demo.html我的github地址有详细使用说明:https://github.com/miracle2017/qrcode_download原创 2019-12-01 15:45:00 · 769 阅读 · 1 评论 -
linux上的nginx,php,mysql一键式安装, 也支持分别安装的shell脚本
本着懒的原则, 自己封装了安装lnmp环境的shell脚本, 也支持只安装独立的模块, 有需要可以去我github上克隆https://github.com/miracle2017/lnmp原创 2019-12-01 15:37:03 · 211 阅读 · 0 评论 -
linux上一键式安装composer的脚本
发现网上并没有可以一键式安装composer的脚本, 每次安装都要命令行都在手动输入一次. 本着懒的原则, 就将这些安装的命令集成在shell脚本中.博主将安装的脚本放在了github上,有需要可以克隆下来. 该脚本可以在你的linux上安装composer, 并设置为阿里云镜像.https://github.com/miracle2017/on-click_install_comp...原创 2019-12-01 15:29:38 · 336 阅读 · 0 评论 -
linux上执行多个shell命令,在上一步命令执行成功才继续下一步命令, 且每步中包含多个命令语句的简洁写法
有时候我们需要执行一系列操作, 每一步需要上一步执行成功后才会执行下一步否则就退出整个脚本, 直接举个栗子:wget https://getcomposer.org/installer || ( echo "failed"; exit ) && php composer-setup.php && rm -r composer-setup.php &&...原创 2019-11-30 13:52:03 · 18909 阅读 · 1 评论 -
linux上修改php.ini配置添加扩展时不生效
因初次编译安装php时没有开启openssl, 导致请求https网站报错, 为此需要手动编译openssl扩展然后添加到php.ini中. 问题就在自己明明已经编译安装生成openssl.so的步骤都没有错, 也已经将extension=openssl.so加入php.ini中,服务器也重启了, 但是无论是访问phpinfo()打印的出内容还是直接命令行php -m打印加载的模块都没有显示有加载...原创 2019-11-29 22:13:38 · 2178 阅读 · 0 评论 -
tp5框架配置域名路由以及在其中使用资源路由
对于配置域名路由; 你可以在你的路由文件中这样设置( 假设你现在有pc端要用www.test.com域名, 手机端要用m.test.com域名的需求)<?php//pc端路由\think\Route::domain('www', [ 'messages' => ['admin/index/message', ['ext' => 'html']],])...原创 2019-11-22 14:46:40 · 1363 阅读 · 0 评论 -
php编译安装遇到的问题
写在最前 大家装的版本都不一样, 但./configure --help 命令是个好东西, 他可以准确看到当前要安装的php支持那些编译选项, 该命令给出的信息很多大家要善用. 官方编译选项列表:https://www.php.net/manual/zh/configure.about.php1.unrecognized options: --with-mcry...原创 2019-11-21 21:19:23 · 262 阅读 · 0 评论 -
php的正则(如preg_match)因输入字符串太长而导致导致只匹配部分.
最近在使用php的正则preg_match是发现, 明明自己正则规则没有问题(自己用ide的正则搜索确实可以匹配到) 但是用php的preg_match()函数就是匹配不出, 也没有报错.以下是我的写法if(preg_match('/<div id="test">[/s/S]*?</div>/', $str, $m)){ var_dump($m);} els...原创 2019-11-18 20:25:30 · 741 阅读 · 0 评论 -
本地使用file_get_contents或curl 请求本地网址时, 报错, 页面一直等待直到超时, 如果请求非本地网址则不会
博主使用的phpstudy的 nginx + php环境开发原因在于window下的nginx + php 模式是不支持并发请求, 多个请求时只能是串行执行即是一个个来所以当你访问本地项目时,而本地项目代码中又请求本地项目网址, 这样出现了一个等另一个的死循环, 最后直到请求超时报错解决: 如果想实现并发可以开启php-cgi.exe监听不同的端口, nginx根据不同的项目转发到不同...原创 2019-10-03 21:38:50 · 353 阅读 · 0 评论 -
php快速获取当前加载的php.ini配置文件的位置, 3种方式
1.最快速的:<?phpvar_dump(php_ini_loaded_file()); //获取当前加载php.ini配置文件路径var_dump(php_ini_scanned_files()); //如果有另外在加载别的php.ini文件会输出相应的信息,否则输出false 2. 在输出phpinfo()的页面ctrl + f, 查找 ini<...原创 2019-10-03 11:38:37 · 3198 阅读 · 0 评论 -
新从easyswoole官网下载下来,用路由访问一直报错页面找不到
在博主遇到的情况是没有在composer.json中加入"autoload": { "psr-4": { "App\\": "App/" }}这是一个坑.完整解决办法就是在从官网下载下来的框架中的composer.js加入autoload 完整的配置如下图:然后执行下 composer dumpautoload 最后再重启下服务, 之后用...原创 2019-09-27 20:44:05 · 907 阅读 · 0 评论 -
使用xdebug+phpstorm调试线上代码(远端remote调试)快速上手版本, 没有那么复杂, 一步步来挺快的. 远端为Linux环境
相对于在本地使用, 调试远端线上代码会略微麻烦些.本教程的环境为 Linux centos7以上1. 为跑在Linux端的php安装xdebug扩展 1.1https://xdebug.org/wizard(非常棒的官方xdebug安装向导, 只要将echo phpinfo();出来的信息复制到网站框中, 该向导就会准确的提供要下载的xdebug版本以及详细安装教程)...原创 2019-09-26 17:54:07 · 1246 阅读 · 0 评论 -
php写的js脚本不执行,语法没有问题
有时候需要在php写一些js脚本,但是有的js脚本不运行就很尴尬.例如 我们要在控制台打印出一些信息,如果如下写法始终不能得到结果:echo "<script> console.log('php是世界上最好的语言')</script>"但是如果我们我们换成如下的写法就可以了:echo "<script>";echo "console.log...原创 2018-07-29 21:09:29 · 5103 阅读 · 0 评论