CTF-WEB:php函数杂记(手册)持续更新

exif_imagetype()

exif_imagetype 是 PHP 中的一个函数,用于判断图像文件的类型。它通过读取图像文件的前几个字节来推断文件类型,而无需依赖文件扩展名。这在处理文件上传时特别有用,因为文件扩展名可能会被伪造。

函数原型

exif_imagetype(string $filename) : int|false
参数:
  • $filename(字符串):要检查的图像文件的路径。
返回值:
  • 成功时返回一个整数,这个整数是图像类型的一个常量。
  • 如果失败,返回 false

常量:

exif_imagetype 返回的整数对应于以下常量,这些常量定义在 PHP 内置的 IMAGETYPE_* 系列中:

  • IMAGETYPE_GIF (1)
  • IMAGETYPE_JPEG (2)
  • IMAGETYPE_PNG (3)
  • IMAGETYPE_SWF (4)
  • IMAGETYPE_PSD (5)
  • IMAGETYPE_BMP (6)
  • IMAGETYPE_TIFF_II (7)(Intel 字节顺序)
  • IMAGETYPE_TIFF_MM (8)(Motorola 字节顺序)
  • IMAGETYPE_JPC (9)
  • IMAGETYPE_JP2 (10)
  • IMAGETYPE_JPX (11)
  • IMAGETYPE_JB2 (12)
  • IMAGETYPE_SWC (13)
  • IMAGETYPE_IFF (14)
  • IMAGETYPE_WBMP (15)
  • IMAGETYPE_XBM (16)
  • IMAGETYPE_ICO (17)
  • IMAGETYPE_WEBP (18)

示例:

$file = 'example.jpg';$imageType = exif_imagetype($file);if ($imageType !== false) {switch ($imageType) {case IMAGETYPE_GIF:echo "The image is a GIF.";break;case IMAGETYPE_JPEG:echo "The image is a JPEG.";break;case IMAGETYPE_PNG:echo "The image is a PNG.";break;// 其他类型可以继续添加default:echo "The image type is not recognized.";}
} else {echo "The file is not a valid image or the image type is not supported.";
}

在这个示例中:

  • exif_imagetype($file) 检查文件类型并返回对应的常量。
  • 根据返回的常量值,使用 switch 语句来输出图像类型的信息。

注意事项:

  1. 文件存在性和可读性:在调用 exif_imagetype 之前,确保文件存在且可读,否则函数会返回 false
  2. 文件格式支持exif_imagetype 支持的文件格式取决于 PHP 的配置和安装时的支持库(如 GD 库)。
  3. 安全性:因为 exif_imagetype 直接读取文件的内容来判断类型,所以它比仅仅依赖文件扩展名更安全。

总结:

exif_imagetype 是一个有用的函数,可以通过读取文件内容来安全地确定图像文件的类型,常用于文件上传和图像处理的场景中,以确保文件的真实性和安全性。

stristr()

stristr 是 PHP 中的一个内置字符串函数,用于查找一个字符串在另一个字符串中第一次出现的位置,并返回从该位置开始到字符串结束的部分。这个函数是区分大小写的。

函数语法

string stristr ( string $haystack , string $needle [, bool $before_needle = false ] )

参数说明

  • $haystack: 要搜索的字符串。
  • $needle: 要查找的子字符串。
  • $before_needle (可选): 如果设置为 true,函数将返回 $haystack$needle 之前的部分,而不是 $needle 及其后面的部分。默认值为 false

返回值

  • 如果 $needle$haystack 中找到,函数将返回 $haystack 中从 $needle 开始的部分。
  • 如果 $needle 没有找到,函数将返回 false

示例

以下是一些使用 stristr 函数的示例:

// 示例 1
$haystack = "Hello World!";
$needle = "world";
$result = stristr($haystack, $needle);
echo $result; // 输出: World!// 示例 2
$haystack = "Hello World!";
$needle = "l";
$result = stristr($haystack, $needle);
echo $result; // 输出: llo World!// 示例 3 (不区分大小写)
$haystack = "Hello World!";
$needle = "WORLD";
$result = stristr($haystack, $needle);
echo $result; // 输出: World!// 示例 4 (使用 before_needle)
$haystack = "Hello World!";
$needle = "o";
$result = stristr($haystack, $needle, true);
echo $result; // 输出: Hell

注意事项

  • stristr 是不区分大小写的,也就是说,它会忽略字母的大小写。
  • 如果 $needle 是空字符串,返回值将是 $haystack

这个函数在处理字符串时非常有用,尤其是在需要查找和截取部分字符串的情况下。

explode()

explode 是 PHP 中用于将字符串分割成数组的函数。它基于指定的分隔符(delimiter)将一个字符串切割成若干个部分,并返回一个数组,数组的每个元素包含原字符串中的一个子串。

函数原型

explode(string $delimiter, string $string, int $limit = PHP_INT_MAX) : array
参数:
  1. $delimiter(分隔符):用于分割字符串的字符或字符序列。
  2. $string(字符串):需要被分割的原始字符串。
  3. ** l i m i t ∗ ∗ (可选,限制分割次数):指定返回数组的最大元素数量。如果指定了 ‘ limit**(可选,限制分割次数):指定返回数组的最大元素数量。如果指定了 ` limit(可选,限制分割次数):指定返回数组的最大元素数量。如果指定了limit,那么返回的数组最多包含 $limit个元素,最后一个元素将包含剩余的所有子字符串。默认值是PHP_INT_MAX`,表示没有限制。
返回值:

返回一个数组,包含由 $delimiter 分割后的字符串部分。

示例:

基本用法:
$string = "apple,banana,orange";
$array = explode(",", $string);
print_r($array);

输出:

Array
([0] => apple[1] => banana[2] => orange
)
  • 这里,explode(",", $string) 使用逗号 , 作为分隔符,将字符串 $string 切割成三个元素的数组。
使用 $limit 限制分割次数:
$string = "apple,banana,orange,grape";
$array = explode(",", $string, 3);
print_r($array);

输出:

Array
([0] => apple[1] => banana[2] => orange,grape
)
  • 在这个例子中,设置了 $limit 为 3,这意味着返回的数组最多包含 3 个元素。最后一个元素包含了剩余的部分(orange,grape)。
如果分隔符不存在:
$string = "apple banana orange";
$array = explode(",", $string);
print_r($array);

输出:

Array
([0] => apple banana orange
)
  • 由于字符串中没有逗号 ,,所以整个字符串被视为一个单一的元素,返回包含整个字符串的数组。
如果分隔符是空字符串:
$string = "apple";
$array = explode("", $string);
print_r($array);

输出:

Array
([0] => a[1] => p[2] => p[3] => l[4] => e
)
  • 如果分隔符是空字符串 "",则会把每个字符单独作为数组的一个元素。

总结:

  • explode() 是将字符串按指定的分隔符切割为数组的非常实用的函数,适用于需要分割数据的场景(如处理 CSV 数据、URL 参数等)。
  • 它的第三个参数 $limit 使得分割操作更加灵活,可以控制返回的数组元素数量。

mb_strtolower()

mb_strtolower 是 PHP 中一个用于将字符串转换为小写的多字节字符串函数。这个函数主要用于处理包含多字节字符的字符串(例如 UTF-8 编码的字符串),以确保字符的正确转换。

函数原型

string mb_strtolower(string $str, string|null $encoding = null)

参数

  • $str: 需要转换为小写的字符串。
  • $encoding: 可选参数,指定字符编码。默认情况下,如果未提供该参数,函数会使用内部字符编码(可以通过 mb_internal_encoding() 函数设置)。常见的编码有 UTF-8ISO-8859-1 等。

返回值

返回转换为小写的字符串。如果在转换过程中发生错误(例如不支持的编码),则返回原字符串。

示例

// 示例 1: 基本使用
$input = "Hello World!";
$output = mb_strtolower($input);
echo $output; // 输出: hello world!// 示例 2: 处理多字节字符
$input = "HELLO 你好!";
$output = mb_strtolower($input, 'UTF-8');
echo $output; // 输出: hello 你好!// 示例 3: 指定编码
$input = "ÄÖÜ";
$output = mb_strtolower($input, 'ISO-8859-1');
echo $output; // 输出: äöü

注意事项

  1. 多字节字符支持: mb_strtolower 特别适用于处理包含非ASCII字符的字符串,而普通的 strtolower 可能无法正确处理这些字符。
  2. 性能: 由于多字节字符串处理的复杂性,相比于普通字符串函数,mb_strtolower 的性能可能稍低。
  3. 环境要求: 使用 mb_strtolower 需要确保 PHP 安装了 mbstring 扩展。

结论

mb_strtolower 是一个非常有用的函数,尤其是在处理国际化应用程序时,可以确保字符串正确转换为小写形式。使用时务必注意字符编码,以避免潜在的错误。

file_put_contents()

file_put_contents() 是 PHP 中用于将数据写入文件的函数。它提供了一种简单的方式来将字符串或二进制数据写入文件,甚至可以在文件不存在时自动创建文件。

函数签名

file_put_contents(string $filename, mixed $data, int $flags = 0, resource|null $context = null): int|false

参数说明

  1. $filename(必需):

    • 要写入数据的目标文件路径。这个文件可以是一个相对路径或绝对路径。如果文件不存在,file_put_contents() 会尝试创建它。
  2. $data(必需):

    • 要写入文件的内容。它可以是一个字符串、一个数组(数组中的每个元素会被写入文件),或者一个流资源(如从其他文件中读取的数据)。
  3. $flags(可选):

    • 这是一个 位标志,控制文件写入的行为。可以组合使用以下值:
      • FILE_USE_INCLUDE_PATH:如果设定了此标志,PHP 会在 include_path 中查找文件。
      • FILE_APPEND:如果文件已存在,追加数据到文件末尾,而不是覆盖原有内容。
      • LOCK_EX:强制获取文件锁,以确保其他进程不能同时写入同一个文件。
  4. $context(可选):

    • 一个 流上下文,它提供了一个流的配置选项,如文件打开模式、文件权限等。通常用于自定义文件操作(例如通过 FTP 或 HTTP 访问远程文件)。如果不需要额外的上下文,通常可以忽略此参数。

返回值

  • 成功时,返回写入的字节数(即实际写入到文件的数据量)。
  • 失败时,返回 false

使用示例

1. 简单写入字符串
file_put_contents("example.txt", "Hello, World!");

这将字符串 "Hello, World!" 写入到 example.txt 文件中。如果该文件不存在,file_put_contents() 会自动创建该文件。

2. 追加数据到现有文件
file_put_contents("example.txt", "This is a new line.\n", FILE_APPEND);

使用 FILE_APPEND 标志,如果 example.txt 文件已存在,这个字符串会被追加到文件的末尾,而不是覆盖文件内容。

3. 写入数组数据
$data = ["Line 1", "Line 2", "Line 3"];
file_put_contents("example.txt", implode("\n", $data));

将数组中的每个元素逐行写入文件。使用 implode() 将数组元素转换为一个由换行符分隔的字符串。

4. 使用上下文写入文件
$options = ["http" => ["method" => "POST","header" => "Content-type: application/x-www-form-urlencoded\r\n","content" => http_build_query(["name" => "John", "age" => 30])]
];
$context = stream_context_create($options);
file_put_contents("http://example.com", "Sending data", 0, $context);

此例展示了如何使用自定义的 流上下文,通过 HTTP 请求将数据发送到远程服务器。上下文对象用于设置请求方法、请求头和请求内容。

5. 文件锁定
file_put_contents("example.txt", "This will be written with a lock.", LOCK_EX);

使用 LOCK_EX 标志,这样在写入文件时会对文件加锁,防止其他进程或脚本同时修改文件内容。

错误处理

file_put_contents() 在发生错误时返回 false。常见的错误包括:

  • 没有权限写入目标文件(例如,文件夹权限不足)。
  • 目标路径无效(例如,路径不存在)。
  • 文件系统满了或不可写。

你可以通过检查返回值来处理这些错误:

$result = file_put_contents("example.txt", "Hello, World!");
if ($result === false) {echo "Failed to write to file.";
} else {echo "Successfully wrote $result bytes to file.";
}

优点

  • 简洁易用file_put_contents() 是一个非常简洁的函数,能够一次性将数据写入文件,而无需使用复杂的文件处理函数(如 fopen(), fwrite(), fclose())。
  • 自动创建文件:如果目标文件不存在,它会自动创建文件。
  • 多种功能支持:支持通过标志(FILE_APPEND, LOCK_EX)控制写入方式,支持通过流上下文进行自定义操作。

注意事项

  1. 覆盖问题
    默认情况下,file_put_contents() 会覆盖文件中已有的内容。如果需要追加内容,必须使用 FILE_APPEND 标志。

  2. 性能问题
    对于非常大的文件或频繁写入的场景,file_put_contents() 可能不是最合适的选择。此时,可以考虑使用 fopen()fwrite() 配合缓冲区操作,以提高性能。

  3. 权限问题
    写入文件需要确保 PHP 进程对目标文件或目录有写入权限。如果没有写入权限,file_put_contents() 会失败。

总结

file_put_contents() 是一个非常方便的 PHP 函数,适用于快速写入数据到文件。它简单易用,支持追加内容、文件锁定、流上下文等高级功能,是文件写操作的常见选择。

strval()

strval() 是 PHP 中的一个内置函数,用于将一个 转换为 字符串 类型。无论传入的变量是什么类型,strval() 都会返回其对应的字符串表示形式。

语法

strval(mixed $value): string
  • $value:要转换为字符串的值,可以是任何类型(例如,整数、浮点数、布尔值、数组、对象等)。

返回值

  • 返回 字符串 类型的值,表示输入值的字符串化形式。
  • 如果输入的值无法转化为字符串,strval() 会返回空字符串 ""

使用场景

strval() 可以用于强制将任何类型的变量转换为字符串,尤其在处理不同数据类型时,确保以字符串形式进行处理。

示例

1. 数字转换为字符串
$number = 123;
$string = strval($number);
echo $string;  // 输出: "123"
2. 浮点数转换为字符串
$float = 12.34;
$string = strval($float);
echo $string;  // 输出: "12.34"
3. 布尔值转换为字符串
$bool_true = true;
$bool_false = false;echo strval($bool_true);  // 输出: "1" (表示 true)
echo strval($bool_false); // 输出: ""  (表示 false)
  • 对于 truestrval() 返回 "1"
  • 对于 falsestrval() 返回空字符串 ""
4. 数组转换为字符串

当你尝试将一个数组转换为字符串时,strval() 会返回空字符串 "",因为数组不能直接转换为有意义的字符串。

$array = [1, 2, 3];
$string = strval($array);
echo $string;  // 输出: "" (数组无法直接转换为字符串)
5. 对象转换为字符串

当你将一个对象传递给 strval() 时,strval() 会调用对象的 __toString() 方法(如果定义了该方法)。如果没有定义 __toString() 方法,PHP 会抛出一个错误。

class MyClass {public function __toString() {return "Hello from MyClass!";}
}$obj = new MyClass();
echo strval($obj);  // 输出: "Hello from MyClass!"

如果没有定义 __toString() 方法:

class MyClass {// 没有 __toString() 方法
}$obj = new MyClass();
echo strval($obj);  // 会抛出错误: "Object of class MyClass could not be converted to string"

与类型转换的关系

虽然 strval() 是显式地将变量转换为字符串的函数,它和 PHP 中的 类型转换(type casting) 有所不同。PHP 是动态类型语言,通常会在需要时自动将变量转换为字符串类型(例如,在 echo 或字符串连接时)。

例如:

$number = 123;
echo $number;  // PHP 自动将 $number 转换为字符串并输出

但是,如果你希望明确地将一个变量转换为字符串,可以使用 strval(),这有助于代码的可读性和明确性。

总结

  • strval() 用于将任何类型的值显式地转换为字符串。
  • 如果输入是 true,则返回字符串 "1";如果是 false,返回空字符串 ""
  • 如果输入是数组或没有 __toString() 方法的对象,返回空字符串 "" 或抛出错误。
  • 对于其他类型(整数、浮点数等),strval() 会返回其对应的字符串形式。

在实际编程中,strval() 常用于确保变量被处理为字符串,尤其是在涉及数据类型不确定或需要明确转换时。

system()

system() 是 PHP 中的一个内置函数,用于执行外部 系统命令程序,并返回命令的 输出结果。它可以执行任意的 shell 命令,适用于与操作系统交互的场景,如文件操作、进程管理、网络诊断等。

语法

system(string $command, int &$return_var = null): string|false
  • $command:要执行的系统命令(字符串),可以是 shell 命令,也可以是操作系统的可执行程序。

  • $return_var(可选):如果提供了此参数,system() 会将命令的返回值(即执行状态码)赋值给该变量。通常返回值为 0 表示命令成功执行,非 0 表示命令执行出错。

    • $return_var 是一个引用参数,返回的是命令的退出状态码。
  • 返回值

    • 返回命令的 输出结果(通常是命令的标准输出),如果命令执行失败或没有输出,返回 false

示例

1. 执行简单的命令并输出结果
$command = "ls -l";  // 查看当前目录的文件
$output = system($command);
echo $output;  // 输出: ls -l 命令的执行结果

该代码会执行 ls -l 命令,并输出该命令的结果。

2. 获取命令的返回值

你可以通过第二个参数获取命令的返回状态码。

$command = "ls -l";
$return_var = null;
$output = system($command, $return_var);
echo "Command output: $output\n";  // 输出命令的标准输出
echo "Return status: $return_var\n";  // 输出命令的返回状态码

在这个示例中,$return_var 会保存 ls -l 命令的返回状态。成功执行时,返回值通常为 0;如果有错误,返回值会是非 0 数字。

3. 执行复杂的命令

system() 也可以执行更复杂的命令。

$command = "echo 'Hello, World!' > test.txt";  // 创建文件并写入内容
system($command);  // 执行命令

该命令会将 “Hello, World!” 写入一个名为 test.txt 的文件中。

4. 错误命令

如果你传入一个无效的命令,system() 会返回 false,并将 $return_var 设置为非零的错误码。

$command = "nonexistentcommand";
$return_var = null;
$output = system($command, $return_var);
echo "Output: $output\n";  // 输出: false
echo "Return status: $return_var\n";  // 输出: 错误码,通常是 127

注意事项

  1. 输出直接打印system() 会将命令的输出直接输出到浏览器或终端,而不仅仅是返回结果。这意味着命令的标准输出会被打印出来,而不需要额外的 echoprint

  2. 安全性问题:使用 system() 执行外部命令时,需要特别小心,防止 命令注入攻击。例如,如果你允许用户输入命令并将其传递给 system(),攻击者可能会构造恶意命令,造成安全隐患。

    为了防止命令注入,必须严格验证或清理用户输入,或使用更安全的接口(如 escapeshellarg()escapeshellcmd() 函数)。

  3. PHP 配置限制:某些主机环境(尤其是共享主机)可能禁用执行外部命令的功能,因此 system() 可能会被禁用,无法正常使用。

  4. 执行结果的缓冲system() 会立即输出命令的结果,这意味着如果命令执行时间较长或输出较大,页面可能会变得不响应。对于长时间运行的命令,考虑使用 exec()shell_exec() 以便更灵活地处理输出。

  5. 跨平台问题:不同操作系统的命令不同,system() 函数所执行的命令在 Windows 和 Unix/Linux 系统上可能会有差异。例如,dir 是 Windows 中的命令,而在 Linux 中应使用 ls

总结

  • system() 是一个 PHP 函数,用于执行操作系统的命令或程序,并返回执行的标准输出。
  • 它直接将命令的结果输出到页面或终端,并且可以通过第二个参数获取命令的返回状态。
  • 由于 system() 可以执行任何系统命令,所以在使用时需要小心,特别是要防止命令注入攻击。

如果需要更复杂的输出处理或执行不同命令的方式,可以使用 exec()shell_exec() 等其他 PHP 函数,这些函数可以提供更多的灵活性。

dirname()

dirname() 是 PHP 内置的一个函数,用于返回指定路径的 目录部分,即去掉文件名之后的路径。它非常适合在处理文件路径时,用来获取文件所在的目录。

基本语法

dirname(string $path, int $levels = 1): string
  • $path:要处理的文件路径(字符串),可以是相对路径或绝对路径。
  • $levels(可选):指定要返回上级目录的层数。默认值是 1,表示返回上一级目录。如果设置为 2,则返回上两级目录,以此类推。

返回值

  • 返回 指定路径的目录部分,即去掉文件名后的路径。
  • 如果传入的路径是根目录(如 /),dirname() 会返回根目录(如 /)。
  • 如果路径为空或无效,返回 false

示例

1. 获取文件的目录部分
$path = "/var/www/html/index.php";
$dir = dirname($path);
echo $dir;
// 输出: /var/www/html
2. 获取上一级目录
$path = "/var/www/html/index.php";
$dir = dirname($path, 1);
echo $dir;
// 输出: /var/www/html

这里,dirname($path, 1) 也是返回路径的上一层,即 /var/www/html

3. 获取上两级目录
$path = "/var/www/html/index.php";
$dir = dirname($path, 2);
echo $dir;
// 输出: /var/www

这里,dirname($path, 2) 返回的是 /var/www,因为它表示返回上两级目录。

4. 对于根目录
$path = "/";
$dir = dirname($path);
echo $dir;
// 输出: /

在根目录路径 / 中,dirname() 返回的是 /,因为没有更高层次的目录。

注意事项

  1. 路径结尾的斜杠:如果路径以斜杠 / 结尾,dirname() 会忽略这个斜杠,返回去掉尾部斜杠的目录。例如:

    $path = "/var/www/html/";
    echo dirname($path);  // 输出: /var/www
    
  2. 相对路径dirname() 同样适用于相对路径:

    $path = "folder1/folder2/file.txt";
    echo dirname($path);  // 输出: folder1/folder2
    
  3. 返回空字符串:如果传入的路径是文件名没有路径部分(例如 file.txt),dirname() 返回一个空字符串:

    $path = "file.txt";
    echo dirname($path);  // 输出: (空字符串)
    

总结

  • dirname() 用于提取文件路径中的目录部分,去掉文件名。
  • 它有一个可选参数 $levels,可以返回多级上级目录。
  • 它在处理文件路径时非常有用,特别是在 Web 开发和文件系统操作中,帮助你动态获取文件所在目录路径。

json_encode()

json_encode() 是 PHP 的一个内置函数,用于将 PHP 数据类型(如数组、对象等)转换为 JSON 字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于 Web 开发和跨平台数据传输。

基本语法

json_encode(mixed $value, int $options = 0, int $depth = 512): string|false
  • $value:需要被编码的数据(可以是数组、对象、字符串、整数、布尔值等)。
  • $options(可选):控制编码行为的选项,使用位掩码(bitmask)。比如:
    • JSON_PRETTY_PRINT:格式化输出,方便阅读。
    • JSON_UNESCAPED_SLASHES:不转义 / 字符。
    • JSON_UNESCAPED_UNICODE:不转义 Unicode 字符(例如中文)。
    • JSON_NUMERIC_CHECK:将数字字符串转换为数字。
  • $depth(可选):设置最大递归深度(默认是 512)。如果数组或对象的深度超过该值,将抛出错误。

返回值

  • 成功时,返回一个 JSON 编码后的字符串
  • 如果编码失败,返回 false

示例

1. 数组转 JSON 字符串
$array = ["name" => "John", "age" => 30];
$json = json_encode($array);
echo $json;
// 输出: {"name":"John","age":30}
2. 对象转 JSON 字符串
class Person {public $name = "Alice";public $age = 25;
}$person = new Person();
$json = json_encode($person);
echo $json;
// 输出: {"name":"Alice","age":25}
3. 使用选项格式化输出
$array = ["name" => "John", "age" => 30, "city" => "New York"];
$json = json_encode($array, JSON_PRETTY_PRINT);
echo $json;
// 输出:
// {
//     "name": "John",
//     "age": 30,
//     "city": "New York"
// }
4. 编码失败

如果传入的值无法转换为 JSON(例如包含资源类型或递归引用的对象),json_encode() 会返回 false

$resource = fopen('example.txt', 'r');
$json = json_encode($resource);
var_dump($json);  // 输出: bool(false)

注意事项

  1. 非 UTF-8 字符串:如果数组或对象中包含非 UTF-8 编码的字符串,json_encode() 会失败并返回 false。可以通过 mb_convert_encoding() 等函数将其转换为 UTF-8 编码。
  2. 递归结构:如果数组或对象包含递归引用,json_encode() 会抛出错误,不能正确处理。

总结

json_encode() 是将 PHP 数据结构转换为 JSON 字符串的工具。它常用于与外部系统(如 JavaScript、Web APIs)交换数据时,确保数据格式是通用的 JSON 格式。

file_get_contents()

file_get_contents 是 PHP 中的一个内置函数,用于读取整个文件的内容并将其作为字符串返回。这个函数非常方便,尤其是在处理文本文件、网页内容或任何可以被直接读取为字符串的文件时。

基本语法

string file_get_contents(string $filename, bool $use_include_path = false, resource $context = null, int $offset = 0, int $maxlen = null)

参数

  1. $filename: 要读取的文件的路径。可以是本地文件路径,也可以是 URL(如果允许的话)。
  2. $use_include_path: (可选)一个布尔值,指示是否在 PHP 的包含路径中查找文件。默认为 false
  3. $context: (可选)一个有效的上下文资源,通常由 stream_context_create() 创建。可以用于设置各种流选项,例如 HTTP 头信息等。
  4. $offset: (可选)从文件的哪个位置开始读取。默认为 0
  5. $maxlen: (可选)读取的最大字节数。默认为 null,表示读取整个文件。

返回值

  • 成功时,file_get_contents 会返回文件内容的字符串。如果文件无法读取,或者发生错误,则返回 false

示例

1. 读取本地文件
$content = file_get_contents('example.txt');if ($content === false) {echo "Error reading the file.";
} else {echo $content;
}
2. 读取远程文件
$url = 'https://www.example.com';
$content = file_get_contents($url);if ($content === false) {echo "Error fetching the URL.";
} else {echo $content;
}

错误处理

由于 file_get_contents 可能因为各种原因失败(例如文件不存在、权限问题、网络错误等),通常建议在调用该函数后检查返回值,以确保成功读取内容。

使用上下文

可以使用 stream_context_create() 来创建流上下文,从而增加 HTTP 头信息或其他选项:

$options = ['http' => ['header' => "User-Agent: MyUserAgent/1.0\r\n"]
];$context = stream_context_create($options);
$content = file_get_contents('http://www.example.com', false, $context);

限制

  • 内存限制: file_get_contents 会将整个文件加载到内存中,因此对于非常大的文件,可能会导致内存不足的问题。
  • 网络限制: 当用来读取远程文件时,网络连接的状态也会影响函数的执行。
  • 文件权限: 如果没有读取文件的权限,函数会返回 false

总结

  • file_get_contents 是一个非常方便的函数,用于读取文件内容。
  • 它支持本地文件和远程 URL 的读取。
  • 使用时应注意错误处理和文件大小,以避免内存问题。

array()

在 PHP 中,array() 是一个用于创建数组的语言构造。数组是 PHP 中一种非常重要的数据类型,用于存储多个值。PHP 数组可以是索引数组(使用数字索引)或关联数组(使用字符串键)。

1. 创建数组

索引数组

索引数组是使用数字索引创建的数组,索引从0开始。例如:

$fruits = array("Apple", "Banana", "Cherry");

在这个例子中,$fruits 数组包含三个元素,索引为 0、1 和 2,分别对应 “Apple”、“Banana” 和 “Cherry”。

关联数组

关联数组是使用字符串键来访问数组元素的数组。例如:

$person = array("name" => "John","age" => 30,"city" => "New York"
);

在这个例子中,$person 数组包含三个键值对,可以通过键(如 “name”、“age” 和 “city”)来访问相应的值。

2. 访问数组元素

你可以通过索引或键来访问数组元素:

// 索引数组
echo $fruits[0]; // 输出: Apple// 关联数组
echo $person["name"]; // 输出: John

3. 数组的操作

PHP 提供了许多函数来操作数组,例如添加元素、删除元素、排序等。

添加元素

可以使用 [] 来添加元素到数组中:

$fruits[] = "Orange"; // 添加元素
删除元素

可以使用 unset() 函数来删除数组中的元素:

unset($fruits[1]); // 删除 "Banana"
数组长度

使用 count() 函数可以获取数组的元素数量:

$count = count($fruits); // 获取元素数量

4. 新的数组语法

从 PHP 5.4 开始,PHP 引入了短数组语法 [],你可以用更简洁的方式来创建数组,而不必使用 array()

$fruits = ["Apple", "Banana", "Cherry"];
$person = ["name" => "John","age" => 30,"city" => "New York"
];

5. 数组的嵌套

数组可以嵌套,也就是说,数组的元素可以是另一个数组。这使得你能够创建复杂的数据结构。例如:

$people = [["name" => "John", "age" => 30],["name" => "Jane", "age" => 28],["name" => "Doe", "age" => 22]
];

6. 遍历数组

可以使用 foreach 循环来遍历数组:

foreach ($fruits as $fruit) {echo $fruit . "\n";
}foreach ($person as $key => $value) {echo "$key: $value\n";
}

总结

  • array() 是 PHP 中创建数组的一个重要构造,支持索引数组和关联数组。
  • PHP 数组具有灵活性,可以存储不同类型的数据,并且可以嵌套。
  • 从 PHP 5.4 开始,使用短数组语法 [] 变得更加简洁。
  • PHP 提供了丰富的内置函数来操作和管理数组,使得数组在 PHP 开发中非常强大和灵活。

session_start()

  • 功能:启动会话或恢复当前会话。会话用于在用户的多个页面请求之间存储和管理数据。

  • 用法:在使用 $_SESSION 变量之前,必须调用 session_start()。如果会话已经启动,它会恢复之前的会话数据。

  • 示例

    session_start();
    $_SESSION['username'] = 'JohnDoe';
    

header()

  • 功能:发送原始的 HTTP 标头。用于在发送内容之前修改 HTTP 响应头部。

  • 用法:通常用于重定向页面或设置缓存控制等。调用 header() 后,应避免输出其他内容(例如 HTML),以防止报错。

  • 示例

    header("Location: /home.php"); // 重定向到 home.php
    

getimagesize()

在 PHP 中,getimagesize() 函数用于获取图像文件的尺寸(宽度和高度)以及其他相关信息。这对于处理图像文件时很有用,比如在网页上显示图像时获取其尺寸。

函数语法

array|false getimagesize(string $filename, array|null $imageinfo = null)

参数

  • $filename: 要检查的图像文件的路径(可以是本地文件,也可以是网络 URL)。
  • $imageinfo: (可选)一个数组,用于存储额外的图像信息,如 MIME 类型、文件大小等。

返回值

  • 成功时返回一个数组,数组的内容包括:

    • 索引 0: 图像的宽度
    • 索引 1: 图像的高度
    • 索引 2: 图像的类型(使用常量表示,如 IMGDATA_GIF、IMGDATA_JPG 等)
    • 索引 3: 用于在 HTML 中显示图像的尺寸字符串(例如:width="300" height="200"
  • 如果失败,返回 false

示例

以下是一个使用 getimagesize() 函数的示例:

<?php
$filename = 'example.jpg';if ($size = getimagesize($filename)) {echo "图像宽度: " . $size[0] . " 像素\n";echo "图像高度: " . $size[1] . " 像素\n";echo "图像类型: " . image_type_to_mime_type($size[2]) . "\n";
} else {echo "无法获取图像信息。";
}
?>

注意事项

  1. 文件存在性: 确保指定的文件存在且是有效的图像文件。
  2. 支持的格式: getimagesize() 支持多种图像格式,如 JPEG、PNG、GIF 等。
  3. 性能: 处理较大的图像文件时,getimagesize() 可能会消耗较多的资源,因此在处理大量图像时要小心。
  4. 网络文件: 如果使用 URL,确保 PHP 配置允许通过 URL 访问文件(allow_url_fopen 必须为 On)。

错误处理

如果 getimagesize() 函数失败,可以通过检查返回值来处理错误。例如:

<?php
$filename = 'nonexistent.jpg';if ($size = getimagesize($filename)) {// 成功获取图像信息
} else {echo "获取图像信息失败,文件可能不存在或不是有效的图像文件。";
}
?>

通过以上信息,可以更好地理解和使用 getimagesize() 函数来处理图像文件。

unlink()

在 PHP 中,unlink() 函数用于删除文件。它可以用来删除路径指定的文件。如果文件删除成功,函数将返回 true,如果删除失败,则返回 false

函数语法

bool unlink(string $filename)

参数

  • $filename: 要删除的文件的路径。

返回值

  • 成功时返回 true,失败时返回 false

示例

以下是一个使用 unlink() 函数的示例:

<?php
$filename = 'file_to_delete.txt';if (unlink($filename)) {echo "文件删除成功!";
} else {echo "文件删除失败!";
}
?>

注意事项

  1. 权限: 确保 PHP 脚本有权限删除指定的文件。通常,文件的所有者或具有相应权限的用户才能删除文件。
  2. 文件存在性: 如果尝试删除一个不存在的文件,将导致 unlink() 返回 false
  3. 目录: unlink() 只能删除文件,不能删除目录。如果需要删除目录,可以使用 rmdir() 函数,不过该目录必须是空的。
  4. 安全性: 在使用 unlink() 删除文件时,要小心处理用户输入,以防止意外删除重要文件或目录(例如,路径遍历攻击)。

错误处理

如果 unlink() 函数失败,可以使用 error_get_last() 函数获取详细的错误信息。例如:

<?php
if (!unlink($filename)) {$error = error_get_last();echo "删除失败: " . $error['message'];
}
?>

通过以上信息,可以更好地理解和使用 unlink() 函数来进行文件删除操作。

copy()

在 PHP 中,copy() 函数用于复制文件。它将源文件的内容复制到目标文件。如果目标文件已存在,则该文件会被覆盖。

函数语法

bool copy(string $source, string $dest)

参数

  • $source: 要复制的源文件的路径。
  • $dest: 目标文件的路径,复制后将存放源文件的内容。

返回值

  • 成功时返回 true,失败时返回 false

示例

以下是一个使用 copy() 函数的示例:

<?php
$source = 'source.txt';
$dest = 'destination.txt';if (copy($source, $dest)) {echo "文件复制成功!";
} else {echo "文件复制失败!";
}
?>

注意事项

  1. 权限: 确保 PHP 脚本有权限读取源文件以及写入目标文件。
  2. 文件存在性: 如果目标文件已经存在,copy() 会覆盖它。如果不想覆盖,可以在复制前检查目标文件是否存在。
  3. 路径: 使用绝对路径或相对路径都可以,但相对路径是相对于当前工作目录的。

错误处理

如果 copy() 函数失败,可以使用 error_get_last() 函数获取详细的错误信息。例如:

<?php
if (!copy($source, $dest)) {$error = error_get_last();echo "复制失败: " . $error['message'];
}
?>

通过以上信息,可以更好地理解和使用 copy() 函数来进行文件复制操作。

mysqli()

mysqli 对象是 PHP 中通过 mysqli 扩展来与 MySQL 数据库交互的对象。它提供了一系列方法和属性,使得我们可以方便地执行数据库操作,如查询、插入、更新和删除数据。mysqli 是 “MySQL Improved” 的缩写,它是为了改进旧的 mysql 扩展而设计的,提供了更多的特性和更好的性能。

以下是一些 mysqli 对象的关键特性和常用方法:

1. 创建 mysqli 对象

使用 mysqli 类的构造函数来创建一个 mysqli 对象并建立数据库连接:

$mysqli = new mysqli($hostname, $username, $password, $database);

2. 检查连接

在创建 mysqli 对象后,可以检查连接是否成功:

if ($mysqli->connect_error) {die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

3. 执行查询

使用 query 方法来执行 SQL 查询:

$result = $mysqli->query("SELECT * FROM tablename");

4. 处理查询结果

查询成功后,可以通过 fetch_assoc 方法来获取结果集:

while ($row = $result->fetch_assoc()) {echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
}

5. 预处理语句

使用 prepare 方法来创建预处理语句,避免 SQL 注入:

$stmt = $mysqli->prepare("INSERT INTO tablename (column1, column2) VALUES (?, ?)");
$stmt->bind_param("ss", $value1, $value2);
$stmt->execute();

6. 关闭连接

操作完成后,记得关闭数据库连接:

$mysqli->close();

常用方法和属性

  • 方法

    • query($query): 执行一条 SQL 查询。
    • prepare($query): 创建一个预处理语句。
    • bind_param($types, ...$vars): 绑定参数到预处理语句。
    • execute(): 执行预处理语句。
    • fetch_assoc(): 获取结果集中的下一行作为关联数组。
    • close(): 关闭数据库连接。
  • 属性

    • connect_errno: 连接错误号码。
    • connect_error: 连接错误描述。
    • affected_rows: 最后一次查询影响的行数。
    • insert_id: 最后一次插入操作生成的自动增量 ID。

实际操作示例

<?php
$hostname = 'localhost';
$username = 'root';
$password = 'password';
$database = 'mydatabase';// 创建 mysqli 对象并建立连接
$mysqli = new mysqli($hostname, $username, $password, $database);if ($mysqli->connect_error) {die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}$sql = "SELECT id, name FROM tablename";
$result = $mysqli->query($sql);if ($result->num_rows > 0) {// 输出数据while ($row = $result->fetch_assoc()) {echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";}
} else {echo "0 results";
}$mysqli->close();
?>

以上代码展示了如何创建 mysqli 对象、执行查询、处理结果并关闭连接。通过 mysqli 对象,可以方便地对 MySQL 数据库进行各种操作。

require()

require 是 PHP 中用于包含和执行指定文件的一个语言结构。它在代码中引用外部文件,使得可以重用代码(如函数、类、配置等),从而提高代码的组织性和可维护性。

基本用法

require 'filename.php';
参数
  • $filename: 需要包含的文件的路径,可以是相对路径或绝对路径。

特点

  1. 强制性: 如果使用 require 引入的文件无法找到或无法读取,将会产生致命错误(Fatal Error),并停止脚本的执行。这与 include 的行为有所不同,后者只会发出警告(Warning),脚本会继续执行。

  2. 文件被包含一次: 如果在同一脚本中多次调用 require 同一个文件,PHP 会确保该文件只被包含一次。这是通过内部的文件路径跟踪机制来实现的。

  3. 路径解析: 文件名可以是相对路径或绝对路径,PHP 会自动解析。

示例

基本的文件包含:

// config.php
$databaseHost = 'localhost';
$databaseUser = 'root';
$databasePass = 'password';
$databaseName = 'my_database';// main.php
require 'config.php';echo $databaseHost;  // 输出 'localhost'

在这个例子中,main.php 文件包含了 config.php,并可以访问该文件中定义的变量。

使用注意事项

  • 错误处理: 由于 require 会导致致命错误,建议在使用时确保文件路径正确,或者使用 require_onceinclude_once 来避免重复包含。

  • 推荐使用: 使用 require 来包含那些对程序执行至关重要的文件,比如配置文件或重要的库文件。

替代方法

  • require_once: 与 require 类似,但它会在文件已经被包含的情况下跳过包含。这可以防止因重复包含同一文件而导致的错误。
require_once 'config.php';
  • include: 类似于 require,但如果文件找不到,PHP 会发出警告,而不是致命错误,允许脚本继续执行。通常用于非关键性文件的包含。

总结

require 是 PHP 中非常重要的一部分,允许开发者将代码模块化和重用。使用时要注意其强制性和错误处理特性,确保所引用的文件始终存在。

is_array()

is_array()` 是 PHP 中的一个内置函数,用于检查一个变量是否是数组。它返回一个布尔值,表示该变量是否为数组类型。

函数语法

bool is_array(mixed $var);
  • 参数:

    • $var: 需要检查的变量,可以是任何类型的变量。
  • 返回值:

    • 如果 $var 是数组,返回 true
    • 如果 $var 不是数组,返回 false

preg_match()

preg_match 是 PHP 中用于执行正则表达式匹配的函数。它可以用来检查一个字符串是否符合某个正则表达式的模式。

函数定义

int preg_match(string $pattern, string $subject, array &$matches = null, int $flags = 0, int $offset = 0);
参数
  1. $pattern: 要匹配的正则表达式模式。必须以 Delimiters 包裹,例如 /pattern/
  2. $subject: 要搜索的输入字符串。
  3. $matches: 可选参数。如果提供,将用来存储匹配到的结果。数组的第一个元素将包含完整的匹配,后续的元素将包含子模式匹配的结果。
  4. $flags: 可选参数,用于修改匹配行为。常用的标志有:
    • PREG_UNMATCHED_AS_NULL: 如果使用此标志,未匹配的子模式将被赋值为 null
  5. $offset: 可选参数,指定从字符串的哪个位置开始搜索。
返回值
  • 如果匹配成功,返回 1
  • 如果没有匹配,返回 0
  • 如果发生错误,则返回 false

示例

基础使用示例:

$pattern = '/^Hello/';
$subject = 'Hello, World!';
$result = preg_match($pattern, $subject);if ($result) {echo '匹配成功!';
} else {echo '没有匹配。';
}

使用 $matches 参数:

$pattern = '/(\d+)/';
$subject = 'There are 15 apples.';
$result = preg_match($pattern, $subject, $matches);if ($result) {echo '找到匹配: ' . $matches[0];  // 输出 '15'
} else {echo '没有匹配。';
}

使用标志和偏移量:

$pattern = '/apple/';
$subject = 'I have an apple and another apple.';
$result = preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 10);if ($result) {echo '找到匹配: ' . $matches[0][0] . ' 在位置: ' . $matches[0][1];  // 输出 'apple' 及其位置
} else {echo '没有匹配。';
}

注意事项

  • 正则表达式的语法遵循 Perl 的正则语法,因此功能非常强大。
  • 使用正则表达式时要注意性能问题,尤其是在处理大型字符串或复杂模式时。
  • 当使用 preg_match 进行匹配时,确保模式的正确性,以防止无意间引发错误或不必要的匹配。

总结

preg_match 是一个强大的工具,可以帮助开发者在字符串中查找特定模式。通过正则表达式,开发者可以实现复杂的匹配逻辑。理解正则表达式的语法和用法是有效使用 preg_match 的关键。

strrev()

strrev 是 PHP 中的一个内置函数,用于反转字符串。它的功能是将输入的字符串中的字符顺序倒置。

函数原型

string strrev ( string $string )

参数

  • $string: 要反转的字符串。

返回值

  • 返回反转后的字符串。如果输入的字符串为空,则返回空字符串。

示例

以下是一些使用 strrev 函数的示例:

<?php
// 示例 1: 基本用法
$original = "Hello, World!";
$reversed = strrev($original);
echo $reversed;  // 输出: "!dlroW ,olleH"// 示例 2: 数字字符串
$number = "12345";
$reversedNumber = strrev($number);
echo $reversedNumber;  // 输出: "54321"// 示例 3: 空字符串
$emptyString = "";
$reversedEmpty = strrev($emptyString);
echo $reversedEmpty;  // 输出: ""// 示例 4: 包含特殊字符
$specialChars = "A!B@C#D$";
$reversedSpecial = strrev($specialChars);
echo $reversedSpecial;  // 输出: "$D#C@B!A"
?>

注意事项

  1. 字符编码: strrev 处理的是字节而不是字符,因此对于某些多字节字符(如 UTF-8 编码的中文字符),反转的结果可能不是预期的。在处理多字节字符时,可以使用 mb_strrev(需要自定义实现,因为 PHP 默认没有此函数)或其他字符串处理方法。

  2. 性能: 对于非常长的字符串,反转操作可能会影响性能。

addslashes()

  • 功能:对字符串中的单引号、双引号、反斜杠和 NULL 字符进行转义。

  • 用法:用于防止 SQL 注入攻击,通过在 SQL 查询中插入特殊字符前添加反斜杠来转义这些字符。不过,现代做法是使用参数化查询来避免 SQL 注入。

  • 示例

    $safe_string = addslashes($user_input);
    // 如果 $user_input 为 O'Reilly,则 $safe_string 为 O\'Reilly
    

mysql_query()

  • 功能:执行一条 MySQL 查询。此函数已经被弃用,在 PHP 7.0 及以后的版本中不再支持。

  • 用法:执行 SELECT、INSERT、UPDATE、DELETE 等 SQL 查询语句,并返回结果资源或布尔值。

  • 示例

    $result = mysql_query("SELECT * FROM users");
    

mysql_num_rows()

  • 功能:返回结果集中行的数量。

  • 用法:通常用于检索 mysql_query() 查询结果的行数,以便判断是否存在数据。

  • 示例

    $result = mysql_query("SELECT * FROM users");
    $num_rows = mysql_num_rows($result);
    // 如果 $num_rows > 0,则表示有查询结果
    

mysql_fetch_array()

  • 功能:从结果集中取得一行作为数组。可以通过关联数组和数字索引数组来访问数据。

  • 用法:用于遍历查询结果的每一行,获取每一行的数据。此函数也已经被弃用,推荐使用 mysqli 或 PDO

  • 示例

    $result = mysql_query("SELECT * FROM users");
    while ($row = mysql_fetch_array($result)) {echo $row['username'];
    }
    

注意mysql_* 函数系列已经在 PHP 5.5.0 中弃用,并在 PHP 7.0.0 中完全移除。建议使用 mysqli 或 PDO 来进行数据库操作,这些扩展提供了更现代、更安全的 API。

数学计算函数

  1. abs():

    • 功能:返回绝对值。
    • 用法abs($number)
    • 示例abs(-5) 返回 5
  2. acos():

    • 功能:计算一个数的反余弦值(以弧度为单位)。反余弦值是一个角度,其余弦值为参数提供的值。
    • 用法acos($value)
    • 示例acos(0.5) 返回 1.0471975511966(约等于 60°)。
  3. acosh():

    • 功能:计算一个数的反双曲余弦值(以弧度为单位)。反双曲余弦值是一个角度,其双曲余弦值为参数提供的值。
    • 用法acosh($value)
    • 示例acosh(1.5) 返回 0.96242365011921
  4. asin():

    • 功能:计算一个数的反正弦值(以弧度为单位)。反正弦值是一个角度,其正弦值为参数提供的值。
    • 用法asin($value)
    • 示例asin(0.5) 返回 0.5235987755983(约等于 30°)。
  5. asinh():

    • 功能:计算一个数的反双曲正弦值(以弧度为单位)。反双曲正弦值是一个角度,其双曲正弦值为参数提供的值。
    • 用法asinh($value)
    • 示例asinh(1) 返回 0.88137358701954
  6. atan2():

    • 功能:计算给定坐标(y 和 x)的反正切值(以弧度为单位)。此函数考虑到象限,使得角度计算更准确。
    • 用法atan2($y, $x)
    • 示例atan2(1, 1) 返回 0.78539816339745(约等于 45°)。
  7. atan():

    • 功能:计算一个数的反正切值(以弧度为单位)。反正切值是一个角度,其正切值为参数提供的值。
    • 用法atan($value)
    • 示例atan(1) 返回 0.78539816339745(约等于 45°)。
  8. atanh():

    • 功能:计算一个数的反双曲正切值(以弧度为单位)。反双曲正切值是一个角度,其双曲正切值为参数提供的值。
    • 用法atanh($value)
    • 示例atanh(0.5) 返回 0.54930614433405
  9. base_convert():

    • 功能:在不同的进制之间转换一个数字。支持的进制范围是2到36。
    • 用法base_convert($number, $from_base, $to_base)
    • 示例base_convert('1010', 2, 16) 返回 A(将二进制的 1010 转换为十六进制)。
  10. bindec():

    • 功能:将一个二进制数转换为十进制数。
    • 用法bindec($binary_string)
    • 示例bindec('1010') 返回 10
  11. ceil():

    • 功能:返回大于或等于指定数字的最小整数。即向上取整。
    • 用法ceil($number)
    • 示例ceil(4.3) 返回 5
  12. cos():

    • 功能:计算一个角度的余弦值(以弧度为单位)。
    • 用法cos($angle)
    • 示例cos(0) 返回 1
  13. cosh():

    • 功能:计算一个数的双曲余弦值。
    • 用法cosh($value)
    • 示例cosh(1) 返回 1.5430806348152
  14. decbin():

    • 功能:将十进制整数转换为二进制字符串。
    • 用法decbin($number)
    • 示例decbin(10) 返回 '1010'
  15. dechex():

    • 功能:将十进制整数转换为十六进制字符串。
    • 用法dechex($number)
    • 示例dechex(255) 返回 'ff'
  16. decoct():

    • 功能:将十进制整数转换为八进制字符串。
    • 用法decoct($number)
    • 示例decoct(64) 返回 '100'
  17. deg2rad():

    • 功能:将角度转换为弧度。
    • 用法deg2rad($degrees)
    • 示例deg2rad(180) 返回 3.1415926535898(即π)。
  18. exp():

    • 功能:计算e的指定幂(自然对数的底数)。
    • 用法exp($value)
    • 示例exp(1) 返回 2.718281828459(即e)。
  19. expm1():

    • 功能:计算 e 的指定幂减去1的值(exp(x) - 1)。
    • 用法expm1($value)
    • 示例expm1(1) 返回 1.718281828459
  20. floor():

    • 功能:向下取整,将一个数舍入到最接近的整数。
    • 用法floor($number)
    • 示例floor(3.7) 返回 3
  21. fmod():

    • 功能:计算浮点数的余数。
    • 用法fmod($x, $y)
    • 示例fmod(7.5, 2) 返回 1.5
  22. getrandmax():

    • 功能:返回可用的随机数生成器的最大值。
    • 用法getrandmax()
    • 示例:通常返回 2147483647(最大32位整数)。
  23. hexdec():

    • 功能:将十六进制字符串转换为十进制整数。
    • 用法hexdec($hex_string)
    • 示例hexdec('ff') 返回 255
  24. hypot():

    • 功能:计算直角三角形的斜边长度,即 sqrt(x^2 + y^2)
    • 用法hypot($x, $y)
    • 示例hypot(3, 4) 返回 5
  25. is_finite():

    • 功能:检查一个值是否是有限的数字。
    • 用法is_finite($value)
    • 示例is_finite(1.23) 返回 trueis_finite(INF) 返回 false
  26. exp():

    • 功能:计算e(自然对数的底数)的指定幂。
    • 用法exp($value)
    • 示例exp(1) 返回 2.718281828459
  27. expm1():

    • 功能:计算 e 的幂减去1,通常用于更高精度的计算。
    • 用法expm1($value)
    • 示例expm1(1) 返回 1.718281828459
  28. floor():

    • 功能:将数字舍入到最接近的整数,向下取整。
    • 用法floor($number)
    • 示例floor(3.7) 返回 3
  29. fmod():

    • 功能:返回浮点数除法的余数。
    • 用法fmod($x, $y)
    • 示例fmod(7, 3) 返回 1
  30. getrandmax():

    • 功能:返回 rand() 函数生成的最大随机数。
    • 用法getrandmax()
    • 示例getrandmax() 可能返回 2147483647
  31. hexdec():

    • 功能:将十六进制字符串转换为十进制整数。
    • 用法hexdec($hex_string)
    • 示例hexdec('ff') 返回 255
  32. hypot():

    • 功能:计算直角三角形的斜边长度(即 sqrt(x^2 + y^2))。
    • 用法hypot($x, $y)
    • 示例hypot(3, 4) 返回 5
  33. is_finite():

    • 功能:检查一个值是否为有限数值。
    • 用法is_finite($value)
    • 示例is_finite(1.5) 返回 true
  34. is_nan():

    • 功能:检查一个值是否为非数字(NaN)。
    • 用法is_nan($value)
    • 示例is_nan(NAN) 返回 true
  35. lcg_value():

    • 功能:生成0到1之间的伪随机浮点数。
    • 用法lcg_value()
    • 示例lcg_value() 可能返回 0.234567
  36. log10():

    • 功能:计算以10为底的对数。
    • 用法log10($value)
    • 示例log10(100) 返回 2
  37. log1p():

    • 功能:计算 log(1 + x) 的值,精度更高。
    • 用法log1p($value)
    • 示例log1p(1) 返回 0.693147
  38. log():

    • 功能:计算以 e 为底的对数(自然对数)。
    • 用法log($value, $base)($base 可选)
    • 示例log(10) 返回 2.302585
  39. max():

    • 功能:返回给定值中的最大值。
    • 用法max($value1, $value2, ...)
    • 示例max(1, 2, 3) 返回 3
  40. min():

    • 功能:返回给定值中的最小值。
    • 用法min($value1, $value2, ...)
    • 示例min(1, 2, 3) 返回 1
  41. mt_getrandmax():

    • 功能:返回 mt_rand() 函数生成的最大随机数。
    • 用法mt_getrandmax()
    • 示例mt_getrandmax() 可能返回 2147483647
  42. mt_rand():

    • 功能:生成伪随机整数。
    • 用法mt_rand($min, $max)(可选)
    • 示例mt_rand(1, 10) 返回介于1和10之间的随机整数。
  43. mt_srand():

    • 功能:种子 mt_rand() 函数的随机数生成器。
    • 用法mt_srand($seed)
    • 示例mt_srand(1234)
  44. octdec():

    • 功能:将八进制字符串转换为十进制整数。
    • 用法octdec($octal_string)
    • 示例octdec('10') 返回 8
  45. pi():

    • 功能:返回圆周率 π 的值。
    • 用法pi()
    • 示例pi() 返回 3.1415926535898
  46. pow():

    • 功能:计算指定数的指定幂。
    • 用法pow($base, $exp)
    • 示例pow(2, 3) 返回 8
  47. rad2deg():

    • 功能:将弧度转换为角度。
    • 用法rad2deg($radians)
    • 示例rad2deg(pi()) 返回 180
  48. rand():

    • 功能:生成一个随机整数。
    • 用法rand([int $min], [int $max])
    • 示例rand(1, 10) 可能返回 7(在1到10之间的随机整数)。
  49. round():

    • 功能:将浮点数舍入到指定的小数位数。
    • 用法round($value, [int $precision])
    • 示例round(3.14159, 2) 返回 3.14
  50. sin():

    • 功能:计算一个角度的正弦值(以弧度为单位)。
    • 用法sin($angle)
    • 示例sin(pi() / 2) 返回 1
  51. sinh():

    • 功能:计算一个数的双曲正弦值。
    • 用法sinh($value)
    • 示例sinh(1) 返回 1.1752011936438
  52. sqrt():

    • 功能:计算一个数的平方根。
    • 用法sqrt($value)
    • 示例sqrt(16) 返回 4
  53. srand():

    • 功能:种下随机数生成器的种子,影响 rand() 函数的结果。
    • 用法srand([int $seed])
    • 示例srand(123)
  54. tan():

    • 功能:计算一个角度的正切值(以弧度为单位)。
    • 用法tan($angle)
    • 示例tan(pi() / 4) 返回 1
  55. tanh():

    • 功能:计算一个数的双曲正切值。
    • 用法tanh($value)
    • 示例tanh(1) 返回 0.761594155955

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生物发酵装备在制药工业中的应用与发展前景

在现代制药工业中&#xff0c;发酵技术扮演着越来越重要的角色。发酵设备&#xff0c;作为这一技术的核心&#xff0c;不仅促进了抗生素、疫苗和生物药物的生产&#xff0c;还为酶的生物合成提供了必要的条件。 发酵技术是指人们利用微生物的发酵作用&#xff0c;通过一系列的…

HCIP快速生成树 RSTP

STP&#xff08;Spanning Tree Protocol&#xff0c;生成树协议&#xff09;和RSTP&#xff08;Rapid Spanning Tree Protocol&#xff0c;快速生成树协议&#xff09;都是用于在局域网中消除环路的网络协议。 STP&#xff08;生成树协议&#xff09; 基本概念&#xff1a; ST…

Excel 无法打开文件

Excel 无法打开文件 ‘新建 Microsoft Excel 工作表.xlsx",因为 文件格式或文件扩展名无效。请确定文件未损坏&#xff0c;并且文件扩展名与文件的格式匹配。 原因是卸载WPS之后&#xff0c;注册表未修改过来。 重新下载WPS&#xff0c;新建&#xff0c;xls工作表&#x…

【计算机网络】网络框架

一、网络协议和分层 1.理解协议 什么是协议&#xff1f;实际上就是约定。如果用计算机语言进行表达&#xff0c;那就是计算机协议。 2.理解分层 分层是软件设计方面的优势&#xff08;低耦合&#xff09;&#xff1b;每一层都要解决特定的问题 TCP/IP四层模型和OSI七层模型…

DPPE-N3中叠氮基团使得DPPE-N3能够与含有炔基的材料在铜离子的催化下发生点击化学反应,生成稳定的1,2,3-三唑环结构,2252461-33-7

一、基本信息 英文名称&#xff1a;DPPE-N3&#xff0c;DPPE-Azide 中文名称&#xff1a;DPPE-叠氮 CAS号&#xff1a;2252461-33-7 分子式&#xff1a;C43H83N4O9P 分子量&#xff1a;831.13 供应商&#xff1a;陕西新研博美生物科技 结构式&#xff1a; 二、结构特点…

算法学习第一弹——C++基础

早上好啊&#xff0c;大佬们。来看看咱们这回学点啥&#xff0c;在前不久刚出完C语言写的PTA中L1的题目&#xff0c;想必大家都不过瘾&#xff0c;感觉那些题都不过如此&#xff0c;所以&#xff0c;为了我们能更好的去处理更难的题目&#xff0c;小白兔决定奋发图强&#xff0…

[AcWing算法基础课]动态规划之01背包

题目链接&#xff1a;01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi&#xff0c;价值是 wi。求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。输出最大价值。 首先&#xff0c;我们…

FreeRTOS 24:事件组EventGroup等待、清零、获取操作

等待事件标志位xEventGroupWaitBits() 既然标记了事件的发生&#xff0c;那么我怎么知道他到底有没有发生&#xff0c;这也是需要一个函数来获 取 事 件 是 否 已 经 发 生 &#xff0c; FreeRTOS 提 供 了 一 个 等 待 指 定 事 件 的 函 数 — — xEventGroupWaitBits()&…

在线绘制带community的蛋白质-蛋白质相互作用(PPI)网络图

导读&#xff1a;分子相互作用网络图揭示了细胞内部分子间的复杂相互作用。通过识别网络中密集连接的节点所形成的社区&#xff08;community&#xff09;&#xff0c;可以揭示它们之间以前未知的功能联系。这些社区可能代表了具有共同功能的功能模块&#xff0c;对于理解细胞生…

qt QTableView详解

1、概述 QTableView 是 Qt 框架中的一个高级视图类&#xff0c;用于以表格形式展示二维数据。它基于 QAbstractItemView&#xff0c;并与模型&#xff08;通常是 QAbstractTableModel 或 QStandardItemModel&#xff09;结合使用&#xff0c;以实现数据的展示和交互。QTableVi…

Orleans集群及Placement设置

服务端界面使用相同的clusterid和serviceid&#xff0c;相同ip地址&#xff0c;不同网关端口号和服务端口号&#xff0c;启动两个silo服务&#xff0c;并使用MySql数据库做Silo间信息同步&#xff0c;实现集群。 silo服务启动代码如下&#xff08;从nuget下载Microsoft.Orleans…

【Linux】 IPC 进程间通信(三)(消息队列 信号量)

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 一、消息队列 &#x1f48c;…

Docker:镜像构建 DockerFile

Docker&#xff1a;镜像构建 DockerFile 镜像构建docker build DockerfileFROMCOPYENVWORKDIRADDRUNCMDENTRYPOINTUSERARGVOLUME 镜像构建 在Docker官方提供的镜像中&#xff0c;大部分都是基础镜像&#xff0c;他们只提供某个简单的功能&#xff0c;如果想要一个功能更加丰富…

遥控器数图控链路系统核心技术+算法详解

一、核心技术 无线通信技术 遥控器数图控链路系统主要基于无线通信技术进行数据传输。通过特定的调制、编码和信号处理技术&#xff0c;将遥控器的操作指令转化为无线电信号&#xff0c;并传输给被控制设备。被控制设备接收到信号后&#xff0c;再将其解码为可识别的指令&…

Kafka 源码 KRaft 模式本地运行

KRaft&#xff08;Kafka Raft Metadata mode&#xff09;&#xff0c;从版本 2.8.0 开始作为测试特性引入&#xff0c;并在后续版本中持续得到改进和增强。 KRaft 模式是指 Kafka 使用 Raft 协议来管理集群元数据的一种运行模式&#xff0c;这标志着 Kafka 向去除对 ZooKeeper …

Android下的系统调用 (syscall),内联汇编syscall

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 什么是系统调用 (syscall) 系统调用是操作系统提供给应用程序的一组接口&#xff0c;允许用户空间程序与内核进行交互。 在 Android&#xff08;基于 Linux …

RAGulator:如何识别和缓解大模型所谓的“忠实幻觉”

RAGulator&#xff0c;一个轻量级的、用于检测RAG系统中语义上与上下文不符&#xff08;OOC&#xff09;的LLM生成文本的检测器 论文链接:https://arxiv.org/abs/2411.03920 论文概述 实时检测大型语言模型&#xff08;LLM&#xff09;生成的与上下文不符的输出问题&#xff…

Git核心概念

目录 版本控制 什么是版本控制 为什么要版本控制 本地版本控制系统 集中化的版本控制系统 分布式版本控制系统 认识Git Git简史 Git与其他版本管理系统的主要区别 Git的三种状态 Git使用快速入门 获取Git仓库 记录每次更新到仓库 一个好的 Git 提交消息如下&#…

leetcode82:删除排序链表中的重复节点||

给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1a; 输入&#xff1a;head [1,1,1,2…

基于SpringBoot的Java教学支持系统开发指南

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理教学辅助平台的相关信息成为必然。开发合适…