1
2
3
4
|
ucfirst()、ucwords() 首字母大写
fputcsv()、fgetcsv()
pack()、unpack()、str_pad()、str_split() 固定字符宽度
wordwrap() 文本自动换行
|
1
2
3
4
5
|
range() 生成范围
mt_rand() 更好的随机
money_format() (only unix)
BCMath(EX: bcadd())、GMP(EX: gmp_add())、big_int(EX: bi_add) 任意精度
base_convert() 进制转换
|
1
2
|
localtime() 当地时间
checkdate() 验证日期是否有效
|
1
2
3
4
5
6
7
8
9
|
foreach迭代副本、each()迭代本身
settype($items, 'array')
array_splice() 减小数组 array_pad() 增大数组
in_array() 检查值
asort() 排序并保持索引关系
natsort() 自然算法排序(可识别img1、img10、img2之间的顺序为1,2,10)
usort() 自定义排序
RecursiveArrayIterator
iterator_to_array
|
1
2
3
|
list($a,$b)=[$b,$a]; 交换变量
shmop(EX: shmop_open())、SystemV(EX: shm_get_var()) 共享内存在进程间共享数据(Semaphore(EX: sem_get())共享内存同步)
addslashes(serialize())、unserialize(stripslashes()) 序列化时便于数据库查询
|
1
2
3
4
|
func_get_args、func_num_args 可变参数
list(, $b, ) = ex_function() // 跳过某些值
call_user_func、call_user_func_array
create_function // 内部使用eval,安全性不佳,不如匿名函数function() {}
|
1
2
3
4
5
6
|
__destruct() //不能在解析器中引用另一个对象,因为PHP可能已经把那个对象删除了
class_implements 返回类的所有接口
ReflectionClass 返回类的相关信息
clone $obj 浅拷贝,可以用__clone()来定制深拷贝
__call 可以将方法访问转交给组合类
Reflection::export() 快速预览类信息
|
1
2
3
4
5
6
7
8
9
|
get_browser() 获取浏览器信息
htmlentities()、html_entity_decode() html字符转换
file_get_contents('php://input') 直接访问POST请求主体而非PHP解析后放在$_POST中的数据
flush()、ob_start()、ob_end_flush() 刷新输出
getenv()、putenv() 环境变量
apache_note() 与apache内部进行通信
ctype_* 一系列数据验证方法
htmlentities($str, ENT_QUOTES, 'UTF-8') 防止跨站点脚本
md5(uniqid()) 用token防止重复提交表单(hash('md5','string')是md5速度的两倍)
|
1
|
PDO::quote() 转义引号(prepare()和execute()会自动转义)
|
output_add_rewrite_var()
将值写入url
预防session劫持:只允许通过cookie传递SessionID,同时生成一个url传递的session token,当请求包含sessionID和session token时才可以访问session。(P373)
预防session重放攻击
1
2
3
4
5
6
|
ini_set('session.use_only_cookies', true)
session_start();
if(!isset($_SESSION['gen']) || $_SESSION['gen']<(time()-30)) {
session_regenerate_id(); //只要用户的授权范围改变,如成功登录后
$_SESSION['gen'] = time();
}
|
1
2
3
4
5
6
|
DOMDocument('1.0', 'UTF-8');
simplexml_load_*
XMLReader 大型XML无法一次性全部读入内存
XPath、DOMXPath 直达所需的节点
DOMDocument::schemaValidate、DOMDocument::relaxNGValidate XML验证
iconv 字符集转换
|
1
2
|
Tidy 库,可以修复html
strip_tags 删除html和php标签
|
setlocale()、strftime() 、money_format()
1
2
3
|
debug_backtrace()
init_get_all()、get_cfg_var、ini_restore()
auto_prepend_file (在php.ini中)设置自动加载的文件,可用于设置DEBUG常量,密码等
|
preg_replace_callback()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$php_errormsg 记录前一次错误信息(track_error需要为on)
fpassthru() 直接读出文件内容并输出
readfile() 直接读取一个文件并输出到缓冲
fgets() 一次读取一行
stream_get_line() 从资源流里读取一行直到给定的定界符
parse_ini_file()
print()是函数,有返回值;echo是语言结构,无返回值
escapeshellarg 把字符串转码为可以在 shell 命令里使用的参数
escapeshellcmd shell 元字符转义
popen()、pclose() 打开通向程序的管道,然后用fputs写入数据或发送命令($php=popen('/usr/bin/nsupdate -k keyfile','w');fputs($ph,'update delete test.e.com A\n'))
backtick(`符号) 会执行其中的程序并返回结果
popen('strace ls 2>&1','r') 将标准错误重定向到标准输出
popen('strace ls 2>&1 1>/dev/null','r') 只读取标准错误
flock() 劝告式锁定(LOCK_EX排他锁,LOCK_SH共享锁;LOCK_NB锁定时不阻塞)
fopen('compress.zlib://lotsofdata.gz','r')
fopen('compress.bzip2://lotsofdata.bz2','r') compress流封装(编译php时要使用--withzlib和--withbz2)
|
DirectoryIterator()
遍历目录
1
2
3
4
|
opendir()、readdir()、closedir() 打开目录遍历文件
smlink() 创建符号连接
stat()、fstat() 给出文件信息(用clearstatcache()刷新缓存结果)
lstat() 给出符号链接本身的信息
|
1
2
3
4
5
|
chmod()、chgrp() 相当于linux命令
FilterIterator 抽象类,用accept()过滤Iterator(如DirectoryIterator)
glob() 返回匹配的文件名数组(如/folder/**/*.txt)
Recursive***Iterator 带递归的Iterator
RecursiveIteratorIterator 将RecursiveIterator扁平化
|
1
|
php_sapi_name 返回描述 PHP 所使用的接口类型的小写字符串。if('cli'==php_sapi_name() ....)
|
1
2
3
|
`/bin/stty -echo` //关闭回显
$password = readline();
`/bin/stty echo`
|