Nov 27, 2015 - LINUX下的PHP

3471 Word Count

由于linux系统的稳定性,大部分的PHP服务器都被部署在linux上,而且像redis等扩展在linux能得到更好的支持,所以对于PHP程序员来说,使用linux的功底也相当重要,接下来总结一下我从一开始在linux下安装配置linux的心得。   linux系统安装 首先是选择linux操作系统,我使用的是Cent OS 6.7 ,它类似红帽系统,简单易接触,而且开源免费。 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它...

Nov 22, 2015 - JS实现别踩白块小游戏

4194 Word Count

最近有朋友找我用JS帮忙仿做一个别踩白块的小游戏程序,但他给的源代码较麻烦,而且没有注释,理解起来很无力,我就以自己的想法自己做了这个小游戏,主要是应用JS对DOM和数组的操作。   程序思路:如图:将游戏区域的CSS设置为相对定位、溢出隐藏;两块“游戏板”上分别排布着24块方格,黑色每行随机产生一个,“游戏板”向下滚动并交替显示,将每个操作板的黑块位置存入数组,每次点击时将数组pop出来进行比对(我觉得亮点在这……)。 这里是游戏的GitHub地址,大家可以到里点击中部菜单最右边的的Downloa...

Nov 14, 2015 - 网页实时聊天之js和jQuery实现ajax长轮询

3363 Word Count

众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系。所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息。 一直以来的方式无非有这么几种: 1、长连接,即服务器端不断开联系,PHP服务器端用ob系列函数来不停的读取输出,但是相当耗费服务器资源。 2、Flash socket,flash的as3语言,创建一个socket服务器用来处理信息。 3、轮询,顾名思义就是不停地发送查询消息,一有新消息立刻更新,但是会有多次无用请求。 4、长轮询,是轮询的升级版,需要服务器端的配合。 5、websocket,HT...

Nov 11, 2015 - PHP用mb_string函数库处理与windows相关中文字符

2102 Word Count

昨天想批处理以前下载的一堆文件,把文件里的关键内容用正则匹配出来,集中处理。在操作文件时遇到一个问题,就是windows操作系统中的编码问题。 我们都知道windows中(当然是中文版),文件名和文件内容等编码都是gbk,而我们在开发过程中,IDE里的编码则是UTF-8,(这里不讨论为什么等等问题, 只考虑怎么把编码转变成一样的)所以导致我写的UTF-8编码的正则模式字符串中的中文在gbk编码的文件中并不能正确匹配。   一开始,我并没有什么办法,试过把PHP脚本文件的编码也改成GBK,也可以用,但是想到这种方法太low了,所以找一找PHP中有没有函数可以满足我的需求。 这时...

Nov 6, 2015 - PHP正则中的捕获组与非捕获组

2597 Word Count

今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同时也希望有大神和细心的学习者找到我理解中出现的问题。   什么是捕获组 我们先看一下PHP的正则匹配函数 int preg_match ( string $pattern , string $subject [, array &$mat...

Nov 5, 2015 - PHP递归创建多级目录(一道面试题的解题过程)

1954 Word Count

今天看到一道面试题,要写出一个可以创建多级目录的函数:   我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){     if(is_dir($dir) || @mkdir($dir,0777)){ //查看目录是否已经存在或尝试创建,加一个@抑制符号是因为第一次创建失败,会报一个“父目录不存在”的警告。         echo $dir."创建成功<br>"; //输出创建成功的目录     }else{         $dirArr=explode('/',$dir); //...

Nov 4, 2015 - PHP模拟发送POST请求之五、curl基本使用和多线程优化

6076 Word Count

今天来介绍PHP模拟发送POST请求的重型武器——cURL函数库的使用和其多线程的优化方法。 说起cURL函数,可谓是老生常谈,但网上许多资料都在关键部分语焉不详,列出一大堆手册上的东西,搞得我入门时也万分痛苦,我翻了些资料,结合自己的笔记,总结了这篇博文,希望能给初次接触cURL的开发者提供一些帮助。   cURL的基本使用步骤 首先来介绍cURL: cURL按照HTTP头信息来模拟浏览器传输数据,它支持FTP, FTPS, HTTP, HTTPS, DICT, FILE等协议,拥有HTTPS认证,H...

Nov 3, 2015 - PHP模拟发送POST请求之四、加强file_get_contents()发送POST请求

2622 Word Count

使用了笨重fsockopen()方法后,我们开始在PHP函数库里寻找更简单的方式来进行POST请求,这时,我们发现了PHP的文件函数也具有与远程URL交互的功能。 最简单的是fopen()和fread()函数。 $fp=fopen('http://localhost?query=query','r'); $content=fread($fp,1024); echo $content;//输出HTML文档信息 fclose($fp); 然后是file_get_contents()函数: $content=file_get_contents('http://localhost?q...

Nov 3, 2015 - PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息

1866 Word Count

了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器。Windows内置命令Telnet可以帮助我们发送简单的HTTP请求。 并且TELNET是一个特别灵活的工具,我们还可以用它进行FTP/SMTP/POP3/TCP等方式的简单请求。 通过开始菜单--运行--CMD命令进入DOS状态, 我们输入“Telnet 主机地址 端口(Telnet 192.168.1.99 80)” 来进入telnet命令状态(完全黑窗口,此时输出字符会出问题),我们按”ctrl&rdquo...

Nov 2, 2015 - PHP模拟发送POST请求之二、用PHP和JS处理URL信息

2309 Word Count

明白了HTTP请求的头信息后,我们还需要对请求地址有所了解。再者,HTTP GET请求是靠URL实现的,所以了解URL的构造,处理URL的重要性不言而喻。 在PHP中我们用parse_url()函数来处理URL信息。 其函数原型如下: array parse_url ( string $url [,URL_COSTANT]) 本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。 对严重不合格的 URL,parse_url()...