常用的函数方法地址
https://www.jb51.net/article/12690_all.htm
这是自己整理的一些常用的函数和一些需掌握的知识点,归纳如下:
字符串函数
一般我们在字符串(地址、文件路径、图片路径)中去查找某个字符或者符号,返回所在的位置,通过几个函数去查找,限定字符串
1、strstr
语法:strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回 needle 在 haystack 中第一次出现的位置开始到结尾的字符串 【区分大小写】,成功返回字符窜, 否则返回false。
如:$mystring = 'helloworld';
$findme = 'l';
$pos = strstr($mystring, $findme); //$pos值为lloworld
2、stristr
string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
描述:返回 needle 在 haystack 中最后一次出现的位置到结尾的字符串,【不区分大小写】,成功返回字 符串, 否则返回false。
如: $mystring = 'helloworld';
$findme = 'L';
$pos = stristr($mystring, $findme); //$pos值为lloworld
3、strpos
语法:strpos ( string $haystack , string $needle [, int $offset = 0 ] )
查找 needle 在 haystack 中第一次出现的位置。【区分大小写】,存在返回位置,否则返回false。
如: $mystring = 'helloworld';
$findme = 'l';
$pos = strpos($mystring, $findme); //$pos值为2
常用的场景就是 —— 查询域名,
if ( strpos($haystack, strval($needle)) !== false ) {
//成功
} else {
//失败
}
4、stripos
语法:stripos ( string $haystack , string $needle [, int $offset = 0 ] )
查找 needle 在 haystack 中第一次出现的位置。【不区分大小写】,存在返回位置,否则返回false。
如: $mystring = 'helloworld';
$findme = 'l';
$pos = stripos($mystring, $findme); //$pos值为2
5、strrpos
语法:strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
查找 needle 在 haystack 中最后一次出现的位置。【区分大小写】,存在返回位置,否则返回false。
如: $mystring = 'helloworld';
$findme = 'l';
$pos = strrpos($mystring, $findme); //$pos值为8
6、strripos
语法:strripos ( string $haystack , string $needle [, int $offset = 0 ] )
查找 needle 在 haystack 中最后一次出现的位置。【不区分大小写】,存在返回位置,否则返回false。
如: $mystring = 'helloworld';
$findme = 'l';
$pos = strripos($mystring, $findme); //$pos值为8
$findme = 'q';
$pos = strripos($mystring, $findme); //$pos值为false
7、str_replace
语法: str_replace(find,replace,string,count)
说明: 使用一个字符串替换字符串中的另一些字符,区分大小写的搜索
如:str_replace(array("m","i"),array("n","z"),array("my name is jim!","the game is over")); // 返回的数组内容:ny nane zs jzn!the gane zs over (m换成n,i换成z)
8、str_ireplace
语法; str_ireplace(find,replace,string,count)
说明: 使用一个字符串替换字符串中的另一些字符,对大小写不敏感的搜索
如:str_ireplace("WORLD","Peter","Hello world!"); //输出 Hello Peter!
注:需要被替换的find可以是数组
9、strrchr
语法:string strrchr ( string $haystack , mixed $needle )
返回 haystack 字符串中的一部分,这部分以 needle 的最后出现位置开始,直到 haystack 末尾。 【区分大小写】,存在,返回字符串,否则返回 FALSE
如 :$mystring = 'helloworld';
$findme = 'l';
$pos = strrchr($mystring, $findme); //$pos值为ld
10、substr 字符串截取
11、addslashes 使用反斜线引用字符串
说明:返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线
实例:$str = "Is your name O'reilly?";
echo addslashes($str);
输出: Is your name O\'reilly?
12、stripslashes
说明:删除由 addslashes() 函数添加的反斜杠。
实例:echo stripslashes("Who\'s Bill Gates?");
输出:Who's Bill Gates?
13、htmlspecialchars
说明:把预定义的字符转换为 HTML 实体。
预定义字符如下:& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >
语法:htmlspecialchars(string,flags,character-set,double_encode)
参数说明:
flag 可用的引号类型:
ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
实例:$str = "Bill & 'Steve'";
echo htmlspecialchars($str, ENT_COMPAT); // 只转换双引号
输出:Bill & 'Steve'
14、htmlspecialchars_decode
说明: 把 htmlspecialchars()函数转变的一些预定义的 HTML 实体转换为字符。
语法: htmlspecialchars_decode( _string,flags_ ) flags_ 参数:ENT_COMPAT 会转换双引号,不转换单引号。ENT_QUOTES 既转换双引号也转换单引号。ENT_NOQUOTES 单/双引号都不转换
实例: $string = "ggbiji & 'ggbiji'";
echo htmlspecialchars_decode($string);
输出:ggbiji & 'ggbiji'
15、htmlentities()
将以下特殊字符转换为 HTML 实体 (无作用)
实例:$str="<script>alert('123')</script>";
echo htmlentities($str, ENT_QUOTES);
输出:<script>alert('123')</script>
16、html_entity_decode
把 HTML 实体转换为字符
实例:$str = "Bill & 'Steve'";
echo html_entity_decode($str); // 只转换双引号
输出:Bill & 'Steve'
17、strip_tags
从字符串中去除 HTML 和 PHP 标记 【返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果】
语法:strip_tags ( string $str [, string $allowable_tags ] ) : string —— allowable_tags 使用可选的第二个参数指定不被去除的字符列表。
实例:$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
输出:Test paragraph. Other text
header('content-type:text/html;charset=utf8'); //设置页面内容是html,编码格式是utf-8。
常用header汇总:
header('Content-Type: text/html; charset=utf-8'); //网页编码
header('Content-Type: text/plain'); //纯文本格式
header('Content-Type: image/jpeg'); //JPG、JPEG
header('Content-Type: application/zip'); // ZIP文件
header('Content-Type: application/pdf'); // PDF文件
header('Content-Type: audio/mpeg'); // 音频文件
header('Content-type: text/css'); //css文件
header('Content-type: text/javascript'); //js文件
header('Content-type: application/json'); //json
header('Content-type: application/pdf'); //pdf
header('Content-type: text/xml'); //xml
header('Content-Type: application/x-shockw**e-flash'); //Flash动画
数组函数
1、array_push
向数组尾部添加一个或多个元素值(入栈),然后返回新数组
实例:$a=array("Dog","Cat");
array_push($a,"Horse","Bird");
print_r($a);
输出: array("Dog","Cat","Horse","Bird")
2、array_pop
删除数组中最后一个元素,然后返回删除后的新数组
实例:$a=array("red","green","blue");
array_pop($a);
print_r($a);
输出: array( "red", "green" )
3、array_column (适用于二维数组)
语法: array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array
说明:array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。
实例: $a=array(array('id'=>1,'name'=>"red"),array('id'=>2,'name'=>"green"),array('id'=>3,'name'=>"blue"));
$arr = array_column($a, 'name', 'id');
print_r($arr);
输出:array( 1=>'red', 2=>'green', 3=>'blue' )
4、array_shift
删除数组中的第一个元素,并返回被删除的元素值
实例: $a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_shift($a);
输出: red
5、array_unshift
将元素插入到数组第一个元素的位置
实例: $a=array("red","green","blue");
array_unshift( $a, 'orange' );
print_r($a);
输出: array( "orange","red","green","blue")
6、array_filter
语法: array_filter( array, function )
说明:用回调函数 function 过滤数组中的元素。该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回给结果数组。数组键名保持不变。
实例1:$a1=array("a","b",2,3,4);
$arr = array_filter($a1, function ($var){
return $var & 1;
});
print_r($arr);
输出: array( 3=> 3 )
实例2:$arr = [0, 1, 2, false, '', null, "0"];
$arr = array_filter($arr, function ($val) {
if ($val === 0 || $val != false) {
return true;
} else {
false;
}
});
print_r($arr); //输出 Array ( [0] => 0 [1] => 1 [2] => 2 )
7、array_unique (不适用于多维数组)
接受array 作为输入并返回没有重复值的新数组。 注意键名保留不变。
实例:$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
输出:array( a=>green, red, blue)
8、array_merge
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组
实例:$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
输出: Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
注意:如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
9、array_rand
语法: array_rand(array,number)
从数组中随机选出一个或多个元素,并返回
实例: $a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
print_r(array_rand($a,2));
输出:Array ( [0] => c [1] => b )
10、array_reverse
语法:array_reverse(array,preserve)
说明:函数将原数组 array 中的元素顺序翻转,创建新的数组并返回。如果第二个参数 preserve 指定为 true,反转输出则元素的键名保持不变,否则键名将丢失。
实例:$a=array("Volvo","XC90",array("BMW","Toyota"));
$preserve=array_reverse($a,true);
print_r($preserve);
输出: Array ( [2] => Array ( [0] => BMW [1] => Toyota ) [1] => XC90 [0] => Volvo )
11、array_map
语法:array_map ( callable $callback , array $array1 [, array $... ] ) : array
说明:返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。
实例1:$frameIdCol = array("Volvo","XC90","BMW","Toyota");
$frameIdCol = array_map(function($val){
return $val . '订单状态';
}, $frameIdCol);
print_r($frameIdCol););
输出:Array ( [0] => Volvo订单状态 [1] => XC90订单状态 [2] => BMW订单状态 [3] => Toyota订单状态 )
实例2: $func = function($value) {
return $value * 2;
};
print_r(array_map($func, range(1, 5)));
输出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
12、array_walk
语法:array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] ) : bool
说明:使用用户自定义函数对数组中的每个元素做回调处理【将用户自定义函数 funcname 应用到 array 数组中的每个单元,array_walk() 不会受到 array 内部数组指针的影响。array_walk() 会遍历整个数组而不管指针的位置。成功时返回 TRUE, 或者在失败时返回 FALSE。】,典型情况下 callback 接受两个参数。array 参数的值作为第一个,键名作为第二个。
实例1: $new_hooks = array('apple','orange','pear');
array_walk( $new_hooks, array( $this, 'hook_in' ) );
实例2:$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
array_walk($fruits, 'test_print');
function test_print($item2, $key)
{
echo "$key. $item2<br />\n";
}
输出:d. lemon
a. orange
b. banana
c. apple
【 array_map / array_walk 区别
1、区别
array_walk 主要是要对数组du内的每个值进行zhi操dao作,操作结果影响原来的数组
array_map主要是对数组中的值进行操作后返回数组,以得到一个新数组
2、区别
array_walk 可以没有返回值;array_map要有返回值,因为要填充数组
】
13、array_keys
描述:返回包含数组中所有键名的一个新数组
语法:array_keys(array,value,strict)
参数说明:strict
可选。与 value 参数一起使用。可能的值:
true - 返回带有指定键值的键名。依赖类型,数字 5 与字符串 "5" 是不同的。
false - 默认值。不依赖类型,数字 5 与字符串 "5" 是相同的。
实例:$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a));
print_r(array_keys($a,"Highlander"));
输出:Array ( [0] => Volvo [1] => BMW [2] => Toyota )
Array ( [0] =>Toyota )
14、array_diff
描述:用于比较两个(或更多个)数组的值,并返回差集。
语法;array_diff(array1,array2,array3...);
参数说明; array1 必需。与其他数组进行比较的第一个数组。
array2 必需。与第一个数组进行比较的数组。
array3,... 可选。与第一个数组进行比较的其他数组。
实例:$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
$result=array_diff($a1,$a2);
print_r($result);
输出:Array ( [d] => yellow )
注:不管这两个数组是否相同都有可能返回的是空数组,因为它只返回 $array1 的差集,所以要验证是否相同的要相互比较才行,
例子如下:if( !array_diff($arr1, $arr2) && !array_diff($arr2, $arr1)){
// 即相互都不存在差集,那么这两个数组就是相同的了,多数组也一样的道理
return true;
}
15、array_filp
描述:用于反转/交换数组中的键名和对应关联的键值
语法:array_flip(array);
实例:$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$result=array_flip($a1);
print_r($result);
输出:Array ( [red] => a [green] => b [blue] => c [yellow] => d )
文件处理函数
1、file_put_contents
将数据写入到文件,会替换原先的值。当设置 flags 参数值为 FILE_APPEND 时,表示在已有文件内容后面追加内容的方式写入新数据
语法:file_put_contents(fileName,data,flags,context)
说明:data 参数类型可以是string、数组(不能为多维数组)、stream资源
实例: file_put_contents("result.txt", "hello", FILE_APPEND);
file_put_contents("result.txt", "world", FILE_APPEND);
相当于使用了fopen()、fwrite、fclose() 这三个函数
2、file_get_contents 从文件中读取数据 [读入到一个字符串中]
语法:file_get_contents(path,include_path,context,start,max_length)
实例:echo file_get_contents("test.txt");
输出:This is a test file with test text.
3、file() 从文件读取数据 [将整个文件读入到一个数组],数组中的每个单元都是文件中相应的一行,包括换行符在内。
语法:file(path,include_path,context)
实例: print_r(file("test.txt"));
输出: Array
(
[0] => Hello World. Testing testing!
[1] => Another day, another line.
[2] => If the array picks up this line,
[3] => then is it a pickup line?
)
4、dirname() 获取文件夹路径
实例:$file = "D:/phpstudy_pro/WWW/wordpress/wp-content/uploads/2020/08/1595816771-450x517.jpeg";
echo dirname($file);
输出:D:/phpstudy_pro/WWW/wordpress/wp-content/uploads/2020/08
注:dirname输出时最后不包括 /
5、basename() 获取文件名
实例:$file = "D:/phpstudy_pro/WWW/wordpress/wp-content/uploads/2020/08/1595816771-450x517.jpeg";
echo basename($file);
输出:1595816771-450x517.jpeg
6、pathinfo() 获取文件扩展名
实例:$file = "D:/phpstudy_pro/WWW/wordpress/wp-content/uploads/2020/08/1595816771-450x517.jpeg";
echo pathinfo($file);
输出:jpeg
7、FILE_APPEND 用于文本追加
经常用来在不同服务器中(windows,mac,linux)作为换行符的判断。
如 : file_put_contents('./data/llpay1.txt',$data.PHP_EOL,FILE_APPEND);
PHP_EOL 换行符【提高代码的源代码级可移植性】
(1)unix系列用 \n
(2)windows系列用 \r\n
(3)mac用 \r
图像处理函数
1、imagecreatetruecolor($width, $height) 创建画布(新建真彩色图像)默认为黑色
2、imagecreate(int $x_size , int $y_size) 创建画布 (新建基于调色板的图像)
不同点:创建画布和为画布填充颜色的流程不一样
3、imagecolorallocate( resource $image , int $red , int $green , int $blue ) 为一幅图像分配颜色
4、imagefill( resource $image , int $x , int $y , int $color ) 区域颜色填充
5、imagestring( resource $image , int $font , int $x , int $y , string $s , int $col ) 水平地画一行字符串
6、imagepng/imagejpeg/imagegif/imagebmp ( resource $image [, string $filename ] ) 以 PNG/JPEG/GIF/BMP 格式将图像输出到浏览器或文件
7、imagecreatefromgif/imagecreatefrompng/imagecreatefromjpeg/imagecreatefrombmp ($filename) 由文件或 URL 创建一个新图象。
8、imagedestroy($image) 销毁图像
9、imagesx/imagesy ( resource $image ) 取得图像宽度/高度
10、getimagesize ( string $filename [, array &$imageinfo ] ) 取得图像大小 如:list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
11、gd_info() 取得当前安装的 GD 库的信息
12、getimagesizefromstring ( string $imagedata [, array &$imageinfo ] ) 从字符串中获取图像尺寸信息
13、imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) 重采样拷贝部分图像并调整大小
参数:$dst_image 新目标图像资源(需要重新创建), $src_image 原图像资源,$dst_x 目标 X 坐标点, $dst_y 目标 Y 坐标点,dst_w 目标宽度,dst_h 目标高度。
实例:imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
14、imagecopyresized ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) 拷贝部分图像并调整大小
实例:imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
综合实例:
实例1: //设置文件类型为图像
header('Content-Type:image/png');
//创建画布
$image = imagecreatetruecolor(200,200);
//为画布分配颜色
$color = imagecolorallocate($image,174,48,96);
//填充颜色
imagefill($image,0,0,$color);
//生成图像
imagepng($image);
//设置文件类型为图像
header('Content-Type:image/png');
//创建画布
$image = imagecreate(200,200);
//为画布分配颜色并填充画布
$color = imagecolorallocate($image,174,48,96);
//生成图像
imagepng($image);
//保存图像,生成图像和保存图像需要分为两步,要么只能生成,要么只能保存
imgaepng($image,'./1.png');
实例2:$newImg = imagecreatetruecolor($des_w, $des_h); //创建画布
$white = imagecolorallocate($newImg, 255,255, 255); //分配颜色
imagefill($newImg, 0, 0, $white); //填充颜色
$img = imagecreatefrompng($src_file);
$imgName = strtotime(date('YmdHis'));
//缩放
imagecopyresampled($newImg, $img, $mid_x, $mid_y, 0, 0, $des_wid, $des_hei, $width, $height);
imagepng($newImg, $imgSrc); //生成图像
imagedestroy($img);
imagedestroy($newImg); //销毁图像
关于PHP重定向
方法一:header("Location: index.php");
方法二:echo "<scrīpt>window.location ="$PHP_SELF";</scrīpt>";
方法三:echo "<META HTTP-EQUIV="Refresh" CONTENT="0; URL=index.php">";
PHP 常用魔术常量
(1)__LINE__ 得到文件中当前行号
(2)__FILE__ 文件的完整路径和文件名,如果用在被包含的文件中,则返回被包含的文件名
(3)__DIR__ 文件所在的目录。如果所在被包括文件中,则返回被包括的文件所在的目录。等价于 dirname(__FILE__)
(4)__FUNCTION__ 函数名称
(5)__CLASS__ 类的名称
(6)__METHOD__ 类的方法名
(7)__NAMESPACE__ 当前命名空间的名称
PHP 超全局变量
(1)$GLOBALS 储存全局作用域中的变量
(2)$_SERVER 获取服务器的相关信息【包含头信息(header),路径(path),脚本位置(script locations)】
常用参数: $_SERVER['SERVER_ADDR'] 当前运行脚本所在的服务器IP
$_SERVER['SERVER_NAME'] 当前运行脚本所在的服务器的主机名
$_SERVER['REQUEST_METHOD'] 访问页面的请求方式
$_SERVER['HTTP_HOST'] 当前请求头中Host
$_SERVER['HTTP_REFERER'] 引导用户代理到当前页的前一页的地址
$_SERVER['HTTP_USER_AGENT'] 当前请求头中User-Agent:项中的内容,如果存在的话。该字符串表明了访问该页面的用户代理的信息。
$_SERVER['SCRIPT_FILENAME'] 当前执行脚本的绝对路径
$_SERVER['SCRIPT_NAME'] 包含当前脚本的当前路径
(3)$_REQUEST 获取POST和GET请求的参数
(4)$_POST 获取表单的POST请求参数
(5)$_GET 获取表单的GET请求参数
(6)$_FILES 获取上传文件的的变量
(7)$_ENV 获取服务器端环境变量的数组
(8)$_COOKIE 浏览器cookie的操作
设置cookie:setcookie(name, value, expire, path, domain);
获取cookie:$_COOKIE["user"];
删除cookie:setcookie("user", "", time()-3600);//设置过期时间
(9)$_SESSION 服务端session的操作
使用session前一定要session_start()启动session
储存session:$_SESSION["name"]="King";//数组操作
销毁session:unset($_SESSION["name"]);//销毁一个
session_destroy()和unset($_SESSION);//销毁所有的session
PHP魔术函数(13个)
__construct() 实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。
__destruct() 当删除一个对象或对象操作终止时被调用。
__call() 对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。
__get() 读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。
__set() 设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。
__toString() 打印一个对象的时被调用。如echo $obj;或print $obj;
__clone() 克隆对象时被调用。如:$t=new Test();$t1=clone $t;
__sleep() serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
__wakeup() unserialize时被调用,做些对象的初始化工作。
__isset() 检测一个对象的属性是否存在时被调用。如:isset($c->name)。
__unset() unset一个对象的属性时被调用。如:unset($c->name)。
__set_state() 调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
__autoload() 实例化一个对象时,如果对应的类不存在,则该方法被调用。
php 加密 与 解密函数
(1)base64_encode 加密 - 使用MIME编码的数据进行Base64
语法:string base64_encode(string data);
实例:$string='www.zhix.net智昕网络'; //定义字符串
echo base64_encode($string); // 输出编码后的内容为 d3d3LnpoaXgubmV05pm65piV572R57uc
(2)base64_decode 解密 - 解码数据的Base64编码的MIME
语法:string base64_decode(string data);
实例:$string='d3d3LnpoaXgubmV05pm65piV572R57uc'; //定义字符串
echo base64_decode($string); //输出解码后的内容 www.zhix.net智昕网络