一些历史悠久的PHP开发技术记录
在整理一些文档,一些历史悠久的PHP开发技术记录,基本没有用了,放这里存着吧。1,location.assign('')也可网页跳转2,const只能在顶层代码中使用,包括在{}里不能使用。类中能使用3,常量也可以使用constant(常量名)来取值。4,使用未定义的常量,会把其名当做值来处理。5,php有8种类型,基本:intfloat,string,bool复合:array,object特殊null,resource6,$n=0123,0开头是8进制,0x是16进制,0b101010二进制。7,进制转换:dec,bin,oct,hex: 转换函数:decbin(),decoct,dechex还有反向转10进制,其它进制间不...[>>…]
Elasticsearch:Fatal error: Uncaught Error: Class PsrLogNullLogger
在测试环境执行后台任务的时候碰到报错:Fatalerror:UncaughtError:ClassPsrLogNullLoggernotfoundin/var/www/vendor/elasticsearch/elasticsearch/src/Elasticsearch/ClientBuilder.php:540,PHP环境7.1.33 在本地环境执行正常,放到测试服务器上报找不到类。而这些类都是通过vendor加载的。解决办法在composer中添加psr/log配置,更新composer依赖。确保vendorpsrlog目录存在。 #composer.json配置 "php":"^7.0", "psr/log":"~1.0", "elasticsearch/elasticsearch"...[>>…]
Visual NMP在windows下端口被占用但进程不存在
偶遇在windows中启动nginx+php环境时发现启动不起来,报错:VisualNMPx64Nginx服务无法启动。系统出错。发生系统错误10048。通常每个套接字地址(协议/网络地址/端口)只允许使用一次。可见是端口已被占用,但我程序已经退出了啊。在CMD下查看进程发现确实有进程在监听9001和9002端口。然后我到任务管理器中查找这个PID为5108的进程时却没有找到。执行kill杀进程也提示Nosuchprocess,如下: #windows下查看端口占用 $netstat-aonfindstr"900" TCP127.0.0.1:90010.0.0.0:0LISTENING5108 TCP127...[>>…]
PHP去除emoji表情的方法代码
PHP去除emoji表情的方法function代码,保存一下以备用需。 function removeEmoji($text){ $clean_text = ""; //MatchEmoticons $regexEmoticons = '/[x{1F600}-x{1F64F}]/u'; $clean_text =preg_replace($regexEmoticons, '', $text);  ...[>>…]
复习一下四种常见的POST提交数据方式
HTTP协议是以ASCII码传输,建立在TCP/IP协议之上的应用层规范。规范把HTTP请求分为三个部分:状态行、请求头、消息主体。协议规定POST提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式Content-Type。 服务端根据请求头(headers)中的Content-Type字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到POST提交数据方案,包含了Content-Type和消息主体编码方式两部分。Content-Type的四种值分别代表四种...[>>…]
imap取邮件时的搜索以及imap_mime_header_decode会自动截断标题
在使用imap读取邮件的时候,为了避免一次读取的全量的邮件,肯定需要用到imap_search,但这个imap_search用起来感觉并不像文档里展示的那么好用,我在使用SUBJECT搜索以及其它时间过滤时感觉过滤参数不起作用似的,反正我尝试通过SUBJECT搜索数字字符串未过滤成功,调试多次最终通过FROM和since来达到过滤目标邮件的作用。 实际imap_search功能挺多,但可能它的设计并不是按照中国人的使用习惯来的。比如since时间格式,看起来就很陌生。如下是通过FROM+SINCE条件来...[>>…]
php直接使用filter_var方法来判断邮箱网址IP地址等
在程序里对用户输入的邮箱、URL、IP地址进行判断时,可能你习惯了使用正则之类preg_match来进行判断,但实际PHP自带的方法filter_var就已经有了这样的功能。filter_var()函数通过指定的过滤器过滤变量。如果成功,则返回已过滤的数据,如果失败,则返回false。#filter_var使用语法filter_var(variable,filter,options)variable:要过滤的变量。filter:规定要使用的过滤器的ID。options:规定包含标志/选项的数组。不同的过滤器ID需要附加的参加,比如使用正则过滤就需要在这里添加正则表达...[>>…]
从服务器登录gmail邮箱进行附件提取Can't connect to imap.gmail.com 993
在windows使用IMAP连接gmail邮箱成功通过并且取得了附件,但是在debian服务器上执行这样的代码却不成功,报错如下: Warning:imap_open():Couldn'topenstream{imap.gmail.com:993/imap/ssl}INBOXin/var/www/test.phponline13 bool(false) CannotconnecttoGmail:Can'tconnecttoimap.gmail.com,993:Connectiontimedout Notice:Unknown:Can'tconnecttoimap.gmail.com,993:Connectiontimedout(errflg=1)inUnknownonline0 Notice:Unknown:Can'tconnecttoimap.gmail.com,993:Connectiontimedout(er...[>>…]
PHP操作CSV/EXCEL的composer包phpoffice/phpspreadsheet
之前用过PHP读取excel、csv文件的一些库,比如PHPExcel,今天找了一个PHPOffice/PhpSpreadsheet,网上有说现在PHPExcel已经不再维护了,最新的一次提交还是在2017年12月25号,看了一下,phpexcel也还在维护中,不过更新频率不如PhpSpreadsheet。 PhpSpreadsheet需要php环境开启php_zip、php_xml、php_gd2、php_fileinfo扩展,我这里用PhpSpreadsheet主要是读取csv文件,PhpSpreadsheet本身可以支持很多格式,可以看IOFactory类中的定义。使用PhpSpreadsheet读取CSV表...[>>…]
使用imap_mime_header_decode反解程序提取的gmail邮件附件名称
使用程序通过imap方法请求gmail邮箱并提取附件,但是取得的名称都是经过了处理的。示例如下,下载的附件名称可能存在parts下面ifparameters的parameters中,这是一个stdClass,值类似于=?UTF-8?B?5LiA51Y1233uf6K6hTEEueGxzeA==?=(这里的值只是示例,非真实值),网上很多的读取邮件附件示例程序也没有对这个字符进行解码,今天找了一下发现了这个方法。 [ifparameters]=>1 [parameters]=>Array ( [0]=>stdClassObject ( [attribute]=>NAME [value]=>=?UTF-8?B?5LiA51Y1233u...[>>…]