## 一:常见字符串操作
1. 截取字符串
substr(string $string, int $start [,int $length])
第一个参数 $string是待截取的字符串 $start是开始截取的位置如果$start>=0是从左边开始定开始位置,左边第一个字符是0
如果$start<0是从右边开始定开始的位置右边的第一个字符是-1。$length如果不存在表示从start的位置截取到结尾,$length
的值是0 false null 那么返回一个空字符串,如果$length>0 表示从start的位置截取多少位 如果$length<0 那么从末尾截取掉
|$length|个字符 定末尾的位置从start开始截取。
2. 检索字符串
strstr(string $haystack, mixed $needle [, bool $before_neddle =false] )
$haystack 输入的字符串 $needle 查找的字符串
$before_neddle 默认是false 返回needle第一次出现位置到末尾(包含$neddle)
如果$before_neddle是true 返回 needle第一次出现之前的字符串(不包含$neddle)
3. 替换字符串
str_ireplace(mixed $search, $mixed $replace,mixed $subject [,int &$count])
$search要搜索的值 可以是字符串或数组
$replace 要替换的值
$subject 要被搜索和替换的字符串或数组
count 如果设置了,会设置执行替换的次数(?)
str_ireplace 是 str_replace忽略大小写的版本 i=>ignore(忽略)
4. 分割字符串
explode(string $delimiter,string $string [,int $limit])
$delimiter 分隔符
$string 被分割的字符串
如果设置了limit limit是正数则返回数组最多包含limit个元素后面的元素包含在string的剩余部分
如果limit参数是负数则返回除了最后-limit个元素外的所有元素
如果limit是0则被当成1
5. 合并字符串
implode ([string $glue,] array $pieces)
$glue 连接符,默认为空的字符串
$pieces 需要转化的数组
6. 反转字符串
strrev(string $string)
7. 重复字符串
str_repeat(string $put,int $multiplier)
$input 待操作的字符串
$multipliter 重复的次数 如果为0函数返回空字符串
8. 查找字符串
stripos(string $haystack, string $neddle [,int $offset=0])
返回字符串$haystack中 $neddle首次出现的位置
$offset是偏移量 如果提供该参数搜索会从字符串该字符数开始统计
stripos 是strpos忽略大小写的版本
9. 统计字符串长度
strlen(string $string)
10. 解释url成一个数组
parse_url(string $url,[,int $component=-1])
$url 被解析的url component指定 PHP_URL_SCHEME 、 PHP_URL_HOST 、 PHP_URL_PORT 、 PHP_URL_USER 、
PHP_URL_PASS 、 PHP_URL_PATH 、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一个来获取 URL 如果不
指定表示获取全部
## 二:常见数组操作
1. 数据操作的基本函数
(1)数据的键名和值
array_values($arr); 获取数组的值
array_keys($arr); 获取数组的键名
array_flip($arr); 数组中的值和键名交换(如果有重复的后面的覆盖前面的)
in_array('apple',$arr);在数组中检索apple
array_search('apple',$arr);在数组中检索apple,如果存在返回键名
array_key_exists('apple',$arr);检索给定的键名是否存在数组中
(2)数组和变量之间的转化
extract ( array &$var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix = NULL ]] )
从数组中将变量导入到当前的符号表,该函数使用数组键名作为变量名,使用数组键值作为变量值。
type: EXTR_PREFIX_SAME - 如果有冲突,在变量名前加上前缀 prefix。(其他参数自己查阅文档)
compact(var1,var2...)
compact() 在当前的符号表中查找该变量名并将它添加到输出的数组中,变量名成为键名而变量的内容成为该键的值。简单说,
它做的事和 extract() 正好相反。返回将所有变量添加进去后的数组。 任何没有变量名与之对应的字符串都被略过。
2. 数组的分段和填充
(1)数组的分段
array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
preserve_keys :默认会重新排序并重置数组的数字索引,如果设置成true则不会重新排序
array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement ]] )
array_splice() 函数与 array_slice() 函数类似,选择数组中的一系列元素,但不返回,而是删除它们并用其它值代替。
如果提供了第四个参数,则之前选中的那些元素将被第四个参数指定的数组取代。最后生成的数组将会返回。
注:如果$length是0也可以用作往数组指定位置插入。
(2)分割多个数组
array_chunk ( array $input , int $size [, bool $preserve_keys = false ] );
将一个数组分割成多个
$size:每个数组的单元数目
preserve_keys 设为 TRUE ,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE ,那每个结果数组将用
从零开始的新数字索引
(3)数组填充
array_pad ( array $input , int $pad_size , mixed $pad_value );
用值将数组填补到指定长度
$pad_size: 新数组的长度。如果 pad_size 为正,则填补到数组的右侧,如果为负则从左侧开始填补。如果 pad_size
的绝对值小于或等于 input 数组的长度则没有任何填补。
$pad_value:将被填充的值,只有在 input 的现有长度小于 pad_size 的长度时才有效
array array_fill ( int $start_index , int $num , mixed $value );
用 value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。
$start_index 返回数组的第一个索引值 $num 插入的元素的数量 $value用来填充的值
3. 数组与栈
array_push ( array &$array , mixed $var [, mixed $... ] )
将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
array_pop ( array &$array )
将数组栈的最后一个元素弹出(出栈)
4. 数组与队列
array_shift ( array &$array )
将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为
从零开始计数,文字键名将不变。
array_unshift ( array &$array , mixed $var [, mixed $... ] )
将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名
将修改为从零开始重新计数,所有的文字键名保持不变
5. 回调函数
array_walk ( array &$array , callable $funcname [, mixed $userdata = NULL ] )
eg: $fruits = array( "d" => "lemon" , "a" => "orange" , "b" => "banana" , "c" => "apple" );
array_walk($fruits,function($items,$k,$prefix){
echo $prefix.'_'.$k.'||'.$items."\r\n";
},'hlcc');
结果: hlcc_d||lemon
hlcc_a||orange
hlcc_b||banana
hlcc_c||apple
array_map ( callable $callback , array $arr1 [, array $... ] )
该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给 array_map()
函数的数组数目一致。
eg:
$a = array( 1 , 2 , 3 , 4 , 5 );
$c = array(9,9,9,9,9);
$b=array_map(function($n,$m){
return $m.'_'.$n*$n;
},$a,$c);
var_dump($b);
结果: array(5) {
[0]=>
string(3) "9_1"
[1]=>
string(3) "9_4"
[2]=>
string(3) "9_9"
[3]=>
string(4) "9_16"
[4]=>
string(4) "9_25"
}
array_filter ( array $input [, callable $callback = "" ] );
次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE ,则 input 数组的当前值会被包含在
返回的结果数组中。数组的键名保留不变。
array_reduce ( array $input , callable $function [, mixed $initial = NULL ] )
将回调函数 function 迭代地作用到 input 数组中的每一个单元中,从而将数组简化为单一的值
initial :如果指定了可选参数 initial,该参数将被当成是数组中的第一个值来处理,或者如果数组为空的话就作为最终返回值。
eg:
function rsum ( $v , $w )
{
$v += $w ;
return $v ;
}
$a = array( 1 , 2 , 3 , 4 , 5 );
$b = array_reduce ( $a , "rsum" ,10);
var_dump($b);
结果 25
6. 数组的排序
sort ( array &$array [, int $sort_flags = SORT_REGULAR ] );
本函数对数组进行由小到大排序。当本函数结束时数组单元将被从最低到最高重新安排
rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
本函数对数组进行逆向排序(最高到最低)。
usort ( array &$array , callable $cmp_function );
本函数将用用户自定义的比较函数对一个数组中的值进行排序。如果要排序的数组需要用一种不寻常的标准进行排序,
那么应该使用此函数
eg:
function cmp ( $a , $b )
{
return strcmp ( $a [ "fruit" ], $b [ "fruit" ]);
}
$fruits [ 0 ][ "fruit" ] = "lemons" ;
$fruits [ 1 ][ "fruit" ] = "apples" ;
$fruits [ 2 ][ "fruit" ] = "grapes" ;
usort ( $fruits , "cmp" );
while (list( $key , $value ) = each ( $fruits )) {
echo " $fruits [ $key ] : " . $value [ "fruit" ] . "\n" ;
}
结果: $fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons
ksort($arr);按照键名正序排序
krsort($arr); 按照键名逆序排序
uksort ( array &$array , callable $cmp_function );
用用户自定义的比较函数对数组中的键名进行排序
natsort($arr); 自然排序(忽略键名)
7. 数组的计算
array_sum($arr); 对数组内部的所有元素做求和运算
数组对的合并
array_merge($arr1,$arr2); 合并两个或多个数组(相同的字符串键名,后面的覆盖前面的,相同的数字键名,
后面的不会做覆盖操作,而是附加到后面)
array_merge_recursive — 递归地合并一个或多个数组
如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本
身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值
将不会覆盖原来的值,而是附加到后面。
数组的差集
array_diff ( array $array1 , array $array2 [, array $... ] );
对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。
array_diff_assoc ( array $array1 , array $array2 [, array $... ] );
返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff() 不同的是键名也用于比较
数据的交集
array_intersect ( array $array1 , array $array2 [, array $ ... ] );
返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
array_intersect_assoc ( array $array1 , array $array2 [, array $ ... ] );
返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 array_intersect() 不同的是键名也用于比较。
8. 其它数组函数
range ( mixed $start , mixed $limit [, number $step = 1 ] );
建立一个包含指定范围单元的数组 $step步长
($arr); 移除数组中重复的值,新的数组中会保留原始的键名
array_reverse($arr,TRUE); 返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名
array_rand($arr,2); 从数组中随机取出一个或 多个元素
shuffle($arr); 将数组的顺序打乱
array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array_multisort — 对多个数组或多维数组进行排序
array_unique — 函数移除数组中的重复的值,并返回结果数组
## 三:php操作日期常见函数
1. time();
返回当前的 Unix 时间戳
2. date ( string $format [, int $timestamp ] )
将时间戳格式化为本地的日期时间,返回格式化后的字符串。
第二个参数为可选参数,表示时间戳,默认值为time(),即当前时间的时间戳
周:
w 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
l - 星期几,英文全名; 如: "Friday"
D - 星期几,三个英文字母; 如: "Fri"
月份:
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"
M - 月份,三个英文字母; 如: "Jan"
3. strtotime ( string $time [, int $now ] );
将字符串格式的英文日期时间转换为Unix时间戳。返回值的类型为int
## 四: php常见的操作文件的函数
1. 创建目录
mkdir("path/to/mydir",0777);
2. 判断文件是否存在
file_exist($file);
3. 检查指定文件是否是目录
is_dir($file);
4. 判断给定的文件是否是一个正常文件
is_file($file);
5. 判断文件名是否是一个符号链接( 软连接)
is_link($file);
6. 删除目录(只能删除空目录)
rmdir();
7. 删除文件
unlink();
8. 获取文件和目录的权限
fileperms()
9. 获取指定文件或目录的类型
file_type();
10. 重命名文件或者目录
rename(oldname,newname,[,context]);
11. 复制 拷贝文件
copy(source,destination);
不能对目录进行此项操作,如果目标文件已经存在,原来的文件将被覆盖。
12. 获取目录的可用空间
disk_free_space();
13. 判断指定的文件是否可写
is_writeable(); is_writable();
14. 改变文件的权限模式
chmod(file,[,mode]);
15. 锁定或释放文件
flock($file,$lock[,mix $block]);
lock的参数可以有以下值:
要取得共享锁定(读取程序) lock 设置 LOCK_SH
要取得独占 锁定(写入程序)lock 设置 LOCK_EX
要释放锁定(无论共享和独占) lock 设置LOCK_UN
注: 如果不希望flock() 在锁定是堵塞,给lock 加LOCK_NB
16. 读取目录文件
opendir();
打开一个目录句柄之后用于 closedir();readdir();rewinddir();
readdir();
返回目录中下一个文件的文件名,文件名以 在文件系统中的排序返回
closedir();
关闭由dir_handle指定的目录流,流必须之前被opendir()所打开
rewinder();
将 dir_handle指定的目录流重置到目录的开头。