mb_substr函数
mb_substr() 函数返回字符串的一部分,之前学过 substr() 函数,它只针对英文字符,如果要分割的中文文字则需要使用 mb_substr()
语法:
mb_substr ( $str ,$start [, $length = NULL [, $encoding = mb_encoding() ]] 参数:
$str:必需。从该 string 中提取子字符串。$start:必需。规定在字符串的何处开始。
正数 - 在字符串的指定下标位置开始
负数 - 在从字符串结尾的指定位置开始
$length :可选。规定要返回的字符串长度。默认是直到字符串的结尾。
正数 - 从 start 参数所在的位置返回
负数 - 从字符串末端返回
$encoding:指定字符编码,可选
mb_strpos函数
语法:
mb_strpos ($str1 ,$str2 )
mb_strpos():返回str2在str1中首次出现的下标位置
参数:
$str1:要被检查的字符串。
$str2:要搜索的字符串。
unserialize() 函数
unserialize() 函数用于将通过 serialize() 函数序列化后的对象或数组进行反序列化,并返回原始的对象结构。
语法结构
unserialize ($str )
$str:序列化的字符串
如果传递的字符串不可解序列化,则返回 FALSE,并抛出异常
如果不可解序列化,则返回false
serialize() 函数
serialize() 函数用于序列化对象或数组,并返回一个字符串。
serialize() 函数序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结构不会改变。
语法
serialize ($value )
$value: 要序列化的对象或数组。
可以看到,当序列化以后输出的结果是一串字符。
a:表示一个数组,由array首字符表示,例如int序列化后回显就是i
4:表示数组的元素个数为4
{}:数组元素的集合(下标 +元素)
i:表示是整型,0:表示元素内容,这里是数组下标
s:表示类型为字符串,长度为6,内容为:Google
__construct
构造函数(也称为构造器)是类中的一种特殊函数,当使用 new 关键字实例化一个对象时,构造函数将会自动调用。代码中用到了 $this,它表示当前调用的对象,而且 $this 只能在类的方法中使用
以下代码大致的意思就是:
定义了一个名为Web的类,该类有三个属性:name、url和title,以及一个构造函数__construct()。构造函数在创建Website对象时自动调用,它接受三个参数并将它们分别赋值给类的属性。
构造函数还调用了类的另一个方法ec(),该方法会输出对象的属性值。
最后,创建了一个Web对象$object,并传入了三个参数。在构造函数中,$object的属性被赋值并输出。因为类无法直接访问,需要得到类的具体对象才能访问,可以通过实例化new来实现对象的创建
__wakeup()
__wakeup():当类外部使用`unserialize()` 时,会检查是否存在一个 `__wakeup()` 方法。如果存在,则会先调用 `__wakeup` 方法,预先准备对象需要的资源。
作用:
__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。
这里的作用就是先将username赋值,使我们传入的username永远为guest
__destruct():
析构函数/方法,析构函数的作用和构造函数正好相反,析构函数只有在对象被垃圾收集器收集前(即对象从内存中删除之前)才会被自动调用。析构函数允许我们在销毁一个对象之前执行一些特定的操作,例如关闭文件、释放结果集等。
public 、public、protected
类中的 公有、私有、受保护成员
public 表示全局,类内部外部子类都可以访问;
private表示私有的,只有本类内部可以使用;
protected表示受保护的,只有本类或子类或父类中可以访问;
不同的访问修饰符对应的序列化也有不同。
各访问修饰符序列化后的区别:
public:属性被序列化的时候属性名还是原来的属性名,没有任何改变
protected:属性被序列化的时候属性名会变成\0*\0字段名
private:属性被序列化的时候属性名会变成\0类名\0字段名
foreach
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。在PHP中,foreach可以用于遍历数组和对象的属性
通过使用foreach循环,我们可以方便地遍历数组和对象的元素,并对其进行相应的操作。
基本的foreach语法如下:
foreach ($array as $key => $value) {
// 在这里执行代码
}
在这里,$array代表要遍历的数组或对象,$key和$value是在每次循环中被赋值的变量,$key表示数组或对象的键名,$value表示对应的值。
每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。
例如,我们有一个包含一些学生姓名和年龄的关联数组:
$students = array(
"Alice" => 18,
"Bob" => 20,
"Charlie" => 19
);
我们可以使用foreach循环遍历这个数组并输出每个学生的姓名和年龄:
foreach ($students as $name => $age) {
echo "姓名:" . $name . ",年龄:" . $age . "<br>";
}
输出:
姓名:Alice,年龄:18
姓名:Bob,年龄:20
姓名:Charlie,年龄:19
foreach循环还可以用于遍历对象的属性。首先,我们需要创建一个对象:
class Person{
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
}
$person1 = new Person("Alice", 18);
$person2 = new Person("Bob", 20);
$person3 = new Person("Charlie", 19);
$people = array($person1, $person2, $person3);
然后,我们可以使用foreach循环遍历$people数组中的每个Person对象,并输出其属性:
foreach ($people as $person) {
echo "姓名:" . $person->name . ",年龄:" . $person->age . "<br>";
}
输出:
姓名:Alice,年龄:18
姓名:Bob,年龄:20
姓名:Charlie,年龄:19
文件上传
PHP file_exists() 函数
定义和用法
file_exists() 函数检查文件或目录是否存在。
如果指定的文件或目录存在则返回 TRUE,否则返回 FALSE。
语法:
file_exists(文件路径)
$_FILES
PHP $_FILES 是一个预定义的数组,用来获取通过 POST 方法上传文件的相关信息。当客户端提交后,我们获得了一个$_FILES 数组
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "错误:" . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}
?>
通过使用 PHP 的全局数组 $_FILES,可以从客户计算机向远程服务器上传文件。
第一个参数是表单的 input name,第二个下标可以是 "name"、"type"、"size"、"tmp_name" 或 "error"。如下所示:
$_FILES["file"]["name"] - 上传文件的名称
$_FILES["file"][tmp_name] - 保存的是文件上传到服务器临时文件夹之后的文件名
$_FILES["file"]["type"] - 上传文件的类型
$_FILES["file"]["size"] - 上传文件的大小,以字节计
$_FILES["file"]["error"] - 由文件上传导致的错误代码
PHP move_uploaded_file() 函数
定义和用法
move_uploaded_file() 函数把上传的文件移动到新位置。
如果成功该函数返回 TRUE,如果失败则返回 FALSE。
该函数仅用于通过 HTTP POST 上传的文件。
如果目标文件已经存在,将会被覆盖。
语法:
move_uploaded_file( file, newloc )
参数 | 描述 |
file | 必需。规定要移动的文件。 |
newloc | 必需。规定文件的新位置。 |
PHP trim() 函数
trim() 函数移除字符串两侧的空白字符或其他预定义字符。
相关函数:
ltrim() - 移除字符串左侧的空白字符或其他预定义字符。
rtrim() - 移除字符串右侧的空白字符或其他预定义字符。
语法
trim(string,charlist)
参数 | 描述 |
string | 必需。规定要检查的字符串。 |
charlist | 可选。规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:
|
deldot函数
这个函数是upload-labs中常见的函数,这其实是一个自定义函数,定义在common.php中
其主要目的是移除文件名末尾的点
例如$a = shell.php.
调用本函数后,就得到$a = shell.php
语法:
deldot(x)
函数定义如下:
function deldot($s){
for($i = strlen($s)-1;$i>0;$i--){
$c = substr($s,$i,1);
if($i == strlen($s)-1 and $c != '.'){
return $s;
}
if($c != '.'){
return substr($s,0,$i+1);
}
}
}
函数大致解释就是:
strlen函数返回的是字符串的长度
从指定字符串倒数第二个字符开始,向后截取一个字符赋给c,直到c不等于0时结束循环
PHP strrchr() 函数
定义和用法
strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置
并返回从该位置到字符串结尾的所有字符。
语法:
strrchr( string,char)
参数 | 描述 |
string | 必需。规定被搜索的字符串。 |
char | 必需。规定要查找的字符。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。 |
这个函数一般用来获取,上传文件的后缀名,比如
PHP strtolower() 函数
属实发现php的函数名很多都是英语直译过来的
定义和用法
strtolower() 函数把字符串转换为小写。
相关函数:
strtoupper() - 把字符串转换为大写
lcfirst() - 把字符串中的首字符转换为小写
ucfirst() - 把字符串中的首字符转换为大写
ucwords() - 把字符串中每个单词的首字符转换为大写
语法:
strtolower(string)
参数 | 描述 |
string | 必需。规定要转换的字符串。 |
PHP str_ireplace() 函数
定义和用法
str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。
该函数必须遵循下列规则:
如果搜索的字符串是一个数组,那么它将返回一个数组。
如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换。
如果同时需要对某个数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余的元素将用空字符串进行替换。
该函数是不区分大小写的。请使用 str_replace() 函数执行区分大小写的搜索。
语法
str_ireplace(find,replace,string,count)
参数 | 描述 |
find | 必需。规定要查找的值。 |
replace | 必需。规定用于替换的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。一个变量,对替换数进行计数。 |
PHP strrpos() 函数
定义和用法
strrpos() 函数查找字符串在另一字符串中最后一次出现的位置(区分大小写)。
相关函数:
strpos() - 查找字符串在另一字符串中第一次出现的位置(区分大小写)
stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
语法
strrpos(string,find,start)
参数 | 描述 |
string | 必需。规定被搜索的字符串。 |
find | 必需。规定要查找的字符。 |
start | 可选。规定开始搜索的位置。 |
注意返回的是字符的下标索引,而不是实在位置
PHP stripos() 函数
定义和用法
stripos() 函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)。
语法
stripos(string,find,start)
注意:函数返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
字符串位置从 0 开始,不是从 1 开始。
参数 | 描述 |
string | 必需。规定被搜索的字符串。 |
find | 必需。规定要查找的字符。 |
start | 可选。规定开始搜索的位置。 |
PHP substr() 函数
定义和用法
substr() 函数返回字符串的一部分。
注意:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。
语法
substr(string,start,length)
参数 | 描述 |
string | 必需。规定要返回其中一部分的字符串。 |
start | 必需。规定在字符串的何处开始。
|
length | 可选。规定要返回的字符串长度。默认是直到字符串的结尾。
|
PHP unpack() 函数
unpack() 函数从二进制字符串对数据进行解包。
如果成功则返回数组,如果失败则返回 FALSE。
语法
unpack(format,data)
参数 | 描述 |
format | 必需。规定在解包数据时所使用的格式。 可能的值:
|
data | 必需。规定被解包的二进制数据。 |
例:@unpack("C2chars", $bin)
在 PHP 中,unpack() 函数用于将二进制数据解包为数组。对于给定的二进制数据 $bin,@unpack("C2chars", $bin) 将会返回一个关联数组,其中键名为 chars1 和 chars2,对应着解包后的两个字节。
在这里,C 表示一个无符号字符 (一个字节),2 表示要解包两个这样的字符。因此,@unpack("C2chars", $bin) 会将 $bin 解包为两个字节,并将结果存储在 $strInfo 中。
PHP intval() 函数
intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。
成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1。
intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
语法:
int intval ( mixed $var [, base] )
参数说明:
$var:要转换成 integer 的数量值。
$base:转化所使用的进制。
如果 base 是 0,通过检测 var 的格式来决定使用的进制:
如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);
如果字符串以 "0" 开始,使用 8 进制(octal);
默认将使用 10 进制 (decimal)。
PHP image_type_to_extension - 获取图片后缀
语法
string image_type_to_extension ( int $imagetype [, bool $include_dot = TRUE ] )
根据给定的常量 IMAGETYPE_XXX 返回后缀名。
参数:
$imagetype:表示图像类型的整数常量,例如 IMAGETYPE_JPEG、IMAGETYPE_PNG 等。
$include_dot(可选):指定是否包括扩展名前的点号,默认为 TRUE,表示包括点号。
返回值:
返回一个字符串,表示与给定图像类型相对应的文件扩展名。
实例
<?php
// 创建图像实例
$im = imagecreatetruecolor(100, 100);
// 保存图像 png 格式
imagepng($im, './test' . image_type_to_extension(IMAGETYPE_PNG));
imagedestroy($im);
?>
执行以上文件会在当期目录下生成一个 test.png 的图片。
php getimagesize 函数 - 获取图像信息
getimagesize() 函数用于获取图像大小及相关信息
成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。
语法格式:
array getimagesize ( string $filename [, array &$imageinfo ] )
getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。
返回结果说明
索引 0 给出的是图像宽度的像素值
索引 1 给出的是图像高度的像素值
索引 2 给出的是图像的类型,返回的是数字,其中1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM
索引 3 给出的是一个宽度和高度的字符串,可以直接用于 HTML 的 <image> 标签
索引 bits 给出的是图像的每种颜色的位数,二进制格式
索引 channels 给出的是图像的通道值,RGB 图像默认是 3
索引 mime 给出的是图像的 MIME 信息,此信息可以用来在 HTTP Content-type 头信息中发送正确的信息,如: header("Content-type: image/jpeg");
exif_imagetype
exif_imagetype 是一个 PHP 内置函数,用于获取图像文件的类型。它的语法是:
exif_imagetype(string $filename): int|false
参数:
$filename:要检查的图像文件的路径。
返回值:
如果给定的文件是一个有效的图像文件,则返回图像类型的常量值。常量值可能是 IMAGETYPE_GIF、IMAGETYPE_JPEG、IMAGETYPE_PNG 等。
如果给定的文件不是有效的图像文件,或者无法读取文件信息,函数会返回 false。
#示例代码
$filename = "image.jpg";
$image_type = exif_imagetype($filename);
if ($image_type) {
echo"该文件是图像文件,类型为:" . $image_type;
} else {
echo"该文件不是图像文件";
}
注意事项:
exif_imagetype 函数需要开启 PHP 的 exif 模块才能正常工作。
这个函数只能获取图像文件的类型,无法判断文件是否为图像文件。
PHP unlink() 函数
unlink() 函数删除文件。
如果成功,该函数返回 TRUE。如果失败,则返回 FALSE。
语法
unlink(filename,context)
参数 | 描述 |
filename | 必需。规定要删除的文件。 |
context | 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。 |
PHP strval() 函数
strval() 函数用于获取变量的字符串值。
语法
string strval ( $var )
参数说明:
$var: 可以是任何标量类型,但不能是数组或对象。
返回字符串。
PHP srand() 函数
srand() 函数播种随机数生成器(rand())。
srand 函数用于设置随机数生成器的种子,以便在调用随机生成函数 rand() 时产生不同的随机数序列。
提示:从 PHP 4.2.0 开始,随机数生成器自动播种,因此没有必要使用该函数。
语法
srand(seed);
参数 | 描述 |
seed | 可选。规定播种值。 |
例:srand(time());
time() 函数返回当前的时间戳,作为种子值传递给 srand 函数,可以确保每次运行代码时都会生成不同的随机数序列。
通过设置种子,可以在不同的时间和环境下得到不同的随机数序列,使生成的随机数更加随机和不可预测。
需要注意的是,srand 函数只需要在需要生成随机数之前调用一次即可,通常放在代码的开头部分。在同一个代码文件中多次调用 srand 函数可能会产生相同的随机数序列,因此最好只在需要时设置一次种子。
imagecreatefromjpeg
拆分理解image create from jpeg,用于从 JPEG 图像文件创建一个新的图像资源。
imagecreatefromjpeg 函数还支持其他类型的图像文件,比如 PNG、GIF 等。只需根据文件类型选择对应的函数即可(如 imagecreatefrompng、imagecreatefromgif 等)。
语法:
imagecreatefromjpeg ( string $filename )
$filename:要打开的 JPEG 图像文件的路径。
如果成功,返回一个新的图像资源,表示打开的 JPEG 图像文件;如果失败,返回 false。
php复制代码$filename = 'path/to/image.jpg';
$image = imagecreatefromjpeg($filename);
if ($image) {
// 成功打开图像文件// 进行后续操作
} else {
// 打开图像文件失败
}
imagejpeg
是一个用于将图像保存为 JPEG 格式的 PHP 函数。
函数的返回值是一个布尔值,表示图像是否成功保存。
imagejpeg 函数还支持其他类型的图像文件,比如 PNG、GIF 等。只需根据文件类型选择对应的函数即可(如 imagepng、imagegif 等)。
语法:
imagejpeg ( $image [,$to [, $quality ]] )
参数解释:
$image 是一个图像资源,通常通过 imagecreatefromjpeg 等函数创建的。
$to 是可选参数,用于指定保存的文件路径。如果不提供该参数,则函数会将图像数据直接输出到浏览器。
$quality 是可选参数,用于指定 JPEG 图像的质量,取值范围是 0-100。默认值是 75。
PHP is_uploaded_file() 函数
定义和用法
is_uploaded_file() 函数检查指定的文件是否是通过 HTTP POST 上传的。
如果文件是通过 HTTP POST 上传的,该函数返回 TRUE。
语法
is_uploaded_file(file)
参数 | 描述 |
file | 必需。规定要检查的文件。 |
PHP is_writable() 函数
定义和用法
is_writable() 函数检查指定的文件是否可写。
如果文件可写,该函数返回 TRUE。
语法
is_writable(file)
参数 | 描述 |
file | 必需。规定要检查的文件。 |