摘要:
PHP 提供了函数可以方便的将各种形式的日期转换为时间戳,该类函数主要是: strtotime():将任何英文文本的日期时间描述解析为时间戳。 mktime():从日期取得时间戳。strtotime()strtotime() 函数用于将英文文本字符串表示的日期转换为时间戳,为 date() 的反函数,成功返回时间戳,否则返回 FALSE 。语法:1 int strtotime ( string time [, int now] )参数 time 为被解析的字符串,是根据 GNU 日期输入格式表示的日期。例子:1 "; //输出明天此时的时间戳5 ?>mktim... 阅读全文
2013年10月18日
摘要:
文件签名一般都在文件的头部,如果你用十六进制方式查看文件,你就可以看到文件的一些签名信息。如用uestudio以十六进制方式查看zip格式的文件,其文件内容头部有50 4B 03 04这样的十六进制信息。同理jpg文件状况有FF D8 FF E0 xx xx 4A 46这样的十六进制信息,其实这此十六进制都是表示一些特殊字条。php怎么样验证文件类型?先来看一个简单的方法:01 function checkFileType($fileName){ 02 $file = fopen($fileName, "rb"); 03 $bin = fread($file,... 阅读全文
摘要:
在PHP的函数中,参数传递可以分为值传递和引用传递(也称为地址传递)两种。默认情况下,PHP是按值传递参数的。值传递参数调用函数时将常量或变量的值(通常称其为实参)传递给函数的参数(通常称为形参)。值传递的特点是实参与行参分别存储在内存中,是两个不相关的独立变量。因此,在函数内部改变形参的值时,实参的值一般是不会改变的。 引用传递(按地址传递)的特点是实参与行参共享一块内存。因此,当形参的值改变的时候,实参的值也会相应的做出改变。从这种角度上说,可以认为形参合实参是同一个变量。 定义引用传递参数时,可以在参数前面加上引用符号&。01 11 12 // 程序输出:测试字符! ... 阅读全文
摘要:
简单的掷骰器许多游戏和游戏系统都需要骰子。让我们先从简单的部分入手:掷一个六面骰子。实际上,滚动一个六面骰子就是从 1 到 6 之间选择一个随机数字。在 PHP 中,这十分简单:echo rand(1,6);。在许多情况下,这基本上很简单。但是在处理机率游戏时,我们需要一些更好的实现。PHP 提供了更好的随机数字生成器:mt_rand()。在不深入研究两者差别的情况下,可以认为 mt_rand 是一个更快、更好的随机数字生成器:echo mt_rand(1,6);。如果把该随机数字生成器放入函数中,则效果会更好。1. 使用 mt_rand() 随机数字生成器函数:1 function r... 阅读全文
摘要:
每一种计算机语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,php也不例外,但是在面向对象编程(OOP)编程中,有些对象需要显式的销毁,防止程序执行内存溢出。一、PHP 垃圾回收机制(Garbage Collector 简称GC)在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP的GC垃圾处理机制,防止内存溢出。当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中所有对象同时被销毁。GC进程一般都跟着每起一个SESSION而开始运行的。gc目的是为了在session文件过期以后自动销毁删除这些文件。二、__dest 阅读全文
摘要:
数组的遍历是PHP一个常见的编程任务,而数组又分为一维数组、二维数组和多维数组。一维数组的遍历很简单,直接一个for循环就可以完成。那么二维数组和多维数组的遍历又应该如何实现呢?请看以下程序: $val ) { if (is_array ($val)) { arr_foreach ($val); } else { echo $val.''; } }}$arr1 = array (1=>array(11,12,13,14=>array(141,142... 阅读全文
摘要:
数据库缓存数据库缓存类允许你把数据库查询结果保存在文本文件中以减少数据库访问。激活缓存需要三步: 在服务器上创建一个可写的目录以便保存缓存文件。 在文件 application/config/database.php 中设置其目录。 激活缓存特性,可以在文件 application/config/database.php 中设置全局选项,也可以用以本页下面的方法手动设置。一旦被激活,每一次含有数据库查询的页面被加载时缓存就会自动发生。当页面被浏览时CodeIgniter的查询缓存系统能够动态执行。如果缓存特性被激活,那么在此页面首次被加载时,数据库查询的结果对象将会被序列化并... 阅读全文
摘要:
你写了一个php脚本,一般都不用考虑内存泄露和垃圾回收的问题,因为一般情况下你的脚本很快就执行完退出了。但在一些运行时间长,数据量大的时候,程序运行一段时间后,php脚本就占用了过多内存,然后就报错(PHP Fatal error: Allowed memory size of 134217728 bytes exhausted)退出了。一般来说,每个页面处理结束,新建的simple_html_dom对象就应该被销毁了——但是实际上没有,很明显,内存泄露发生了。PHP的垃圾回收机制php 5.3之前使用的垃圾回收机制是单纯的“引用计数”,也就是每个内存对象都分配一个计数器,当内存对象被变量引用 阅读全文
摘要:
我们的数据未必都是存储在数据库中,很多时候是用数组来组织的。所以获取数组数据,进行分页是比较常见的编程要求。分页的原理很简单,就是按分页数获取某个范围的数据而已,PHP给我们提供了一个很便利的函数:array_slice()。array_slice() 函数在数组中根据条件取出一段值,并返回。下面举两个分页例子,都很简单。01 public function books($pagenum = 1)02 {03 include_once("page.php");04 include("arr_books.php");05 06 ... 阅读全文
摘要:
有些时候,我们需要对一些html文本进行处理,比如需要将文本中的超链接内容去除,这个时候就需要用到正则表达式了。比如你可以用$str = preg_replace("/]*href=[^>]*>|]*>/i","",$strhtml); 这段来实现需求,如果想要更多解决方法,可以参看以下的。1、删除内容中的超链接ereg_replace(']*)>([^','\\2',$content);ereg_replace("]*>|","",$content); 阅读全文
摘要:
记录一下一个问题的解决,里面涉及几个函数的用法,当作复习啦。先说明一下问题。数据表里面的字段 content 存储了一个以逗号分割的字符串,最大有20个数,最大数字为40。比如3,24,33,40类似字样的数字序列。其实就是一个保存了多项投票结果的字段啦。现在需要统计每个数字的个数,也就是每个投票项有多少人投了,并排序。我的思路是这样的。1. 首先从数据库的congtent字段读取数据,并把它们合并成一个字符串。1 fetch_array($result))3 {4 //$r[] = explode(",", $myrow["content"]);5.. 阅读全文
摘要:
PHP数组去除重复项有个内置函数array_unique(),但是php的array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组的array_unique函数。之前写了一篇关于数组去重的文章,但是仅限于一维数组。下面的函数可以用于二维数组://二维数组去掉重复值function array_unique_fb($array2D){ foreach ($array2D as $v) { $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[] = $v... 阅读全文
摘要:
字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。01 =224 )15 {16 $stringTMP = substr($string,$i,3);17 $i = $i + 3;18 }19 elseif( ord($stringTMP) >=192 )20 {21 ... 阅读全文
摘要:
Cookie和Session简介很多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 Session来跟踪和判断。Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪。Cookie是一种在远程浏览器端存储数据并以此来跟踪和识别用户的机制。Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用。Cookie的配置与应用1 ... 阅读全文
摘要:
在使用 PHP 进行开发的过程中,或早或晚,您会需要创建许多相似的变量,这时候你可以把数据作为元素存储在数组中。数组中的元素都有自己的 ID,因此可以方便地访问它们。关联数组关联数组,它的每个 ID 键都关联一个值。在存储有关具体命名的值的数据时,使用数值数组不是最好的做法。通过关联数组,我们可以把值作为键,并向它们赋值。这里介绍10个操作PHP关联数组的技巧,熟练运用能帮助你提高开发效率。1、添加数组元素PHP是一种弱类型语言,这意味着你不需要显示声明一个数组及其大小,相反,你可以同时声明并填充数组。1 $capitals = array( 2 'Alabama' => 阅读全文
摘要:
很多博客软件都有这么一个功能,比如“生成本次页面一共花费了xx毫秒,进行了xx次数据库查询”等等。那么这个功能是如何实现的呢,下面我大概说下思路。1. 在类的构造函数中声明全局变量定义一个全局变量 $queries 用来统计页面生成经过的数据库查询次数。1 function __construct()2 {3 parent::__construct();4 global $queries;5 }2. 修改数据库类中封装好的的 query()你应该有用到数据库类吧,找到它封装 query() 的方法,比如下面的:1 // 执行SQL语句2 ... 阅读全文
摘要:
最近需要用到发送邮件的功能,原本是用PHP自带的mail()函数发送的。php mail()这个方法非常简单、方便、易用,但是除了网易邮箱、QQ邮箱、GMAIL邮箱等常用的邮箱可以收到之外,经测试HOTMAIL、TOM、LIVE等邮箱是收不到此类邮件的。所以就转而使用PHPMailer这个强大的邮件发送类。使用官方自带的一些例子,有些会报 Mailer Error: Could not instantiate mail function. 这个错误。参考了一些资料之后,还是自己写了一个方法。代码很简单,就不多解释了。01 function mailto($nickname, $addre... 阅读全文
摘要:
序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。1. serialize和unserialize函数这两个是序列化和反序列化PHP中数据的常用函数。01 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');04 05 //序列化数组06 $s = serialize($a);07 echo $s;08 //输出结果:a:3:{s:1:" 阅读全文
摘要:
01 程序运行如下:1 2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24补充几点说明: 生成随机数时用了 mt_rand() 函数。这个函数生成随机数的平均速度要比 rand() 快四倍。 去除数组中的重复值时用了“翻翻法”,就是用 array_flip() 把数组的 key 和 value 交换两次。这种做法比用 array_unique() 快得多。 返回数组前,先使用 shuffle() 为数组赋予新的键名,保证键名是 0-n 连续的数字。如果不进行此步骤,可能在删除重复值时造成键名不连续,给遍历带来麻烦。 阅读全文