PHP 标准库:函数与类的完整概述

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

PHP 标准库:完整概述



PHP 标准库(Standard PHP Library, SPL)是一组内置的类、接口和函数,在每个 PHP 发行版中均可使用,无需安装额外扩展。它涵盖关键领域:字符串处理、数组处理、文件系统、日期、正则表达式,以及数据结构和迭代器。在本文中,我们将通过实际示例详细解析标准库的主要组件。



1. 字符串处理函数

PHP 提供了数十个用于字符串操作的内置函数。让我们看看最常用的几个:



  • strlen() — 返回字符串的长度。
  • strpos() — 查找子字符串首次出现的位置。
  • substr() — 提取字符串的一部分。
  • str_replace() — 替换所有出现的子字符串。
  • explode() 和 implode() — 通过分隔符拆分/连接字符串。


<?php$text = "Привет, мир! Добро пожаловать в PHP.";echo strlen($text); // 35echo strpos($text, "мир"); // 8echo substr($text, 0, 7); // "Привет"echo str_replace("мир", "вселенная", $text); // "Привет, вселенная! Добро пожаловать в PHP."print_r(explode(" ", $text)); // Array ( [0] => Привет, [1] => мир! [2] => Добро [3] => пожаловать [4] => в [5] => PHP. )?>


2. 数组处理函数

数组是 PHP 的基础。标准库包含用于处理数组的强大函数:



  • array_map() — 对每个元素应用回调函数。
  • array_filter() — 根据条件过滤元素。
  • array_merge() — 合并数组。
  • array_keys() 和 array_values() — 获取键/值。
  • sort() 和 rsort() — 对数组进行排序。


<?php$numbers = [1, 2, 3, 4, 5, 6];// 每个元素加倍$doubled = array_map(fn($n) => $n * 2, $numbers);print_r($doubled); // [2, 4, 6, 8, 10, 12]

// 只保留偶数$even = array_filter($numbers, fn($n) => $n % 2 === 0);print_r($even); // [1 => 2, 3 => 4, 5 => 6]

$merged = array_merge(['a' => 1, 'b' => 2], ['c' => 3, 'd' => 4]);print_r($merged); // ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4]?>


3. 文件与文件系统操作

PHP 提供了无需外部库即可读取、写入和管理文件的函数:



  • fopen(), fwrite(), fread(), fclose() — 底层操作。
  • file_get_contents() 和 file_put_contents() — 简单操作。
  • file_exists(), is_dir(), mkdir() — 检查与创建目录。
  • scandir() — 获取文件夹中的文件列表。


<?php// 写入文件$data = "Hello, file!";file_put_contents('example.txt', $data);

// 读取文件$content = file_get_contents('example.txt');echo $content; // Hello, file!

// 创建目录if (!file_exists('uploads')) { mkdir('uploads', 0755, true);}

// 文件列表$files = scandir('.');print_r($files);?>


4. 日期与时间处理

DateTime 类以及 date()、time() 函数可用于处理时间戳:



<?php// 当前日期echo date('Y-m-d H:i:s'); // 2025-03-25 14:30:00

// 使用 DateTime$date = new DateTime('2025-12-31');$date->modify('+1 month');echo $date->format('d.m.Y'); // 31.01.2026

// 日期差异$now = new DateTime

推荐