PHP 字符串处理

字符串是 PHP 中最常见的数据类型,PHP 提供了超过 100 个字符串处理函数。

字符串定义

PHP 实例
// 单引号:不解析变量,性能略高
$str1 = '这是一个字符串';

// 双引号:解析变量和转义字符 $name = "张三"; $str2 = "你好,$name!"; // 你好,张三! $str3 = "你好,{$name}!"; // 推荐写法,更清晰

// Heredoc:适合多行字符串 $html = <<<EOT <div> <p>$name</p> </div> EOT;

// Nowdoc:类似单引号,不解析变量 $raw = <<<'EOT' 变量 $name 不会被解析 EOT; ?> ``

常用字符串函数

长度与大小写

`php <?php $str = "Hello, World!";

echo strlen($str); // 13(字节数) echo mb_strlen($str); // 13(字符数,支持中文)

echo strtoupper($str); // HELLO, WORLD! echo strtolower($str); // hello, world! echo ucfirst("hello"); // Hello echo ucwords("hello world"); // Hello World ?> `

查找与替换

`php <?php $str = "PHP 是世界上最好的语言,PHP 很流行";

// 查找位置 echo strpos($str, "PHP"); // 0(第一次出现) echo strrpos($str, "PHP"); // 14(最后一次出现)

// 判断是否包含(PHP 8+) echo str_contains($str, "最好"); // true echo str_starts_with($str, "PHP"); // true echo str_ends_with($str, "流行"); // true

// 替换 echo str_replace("PHP", "Python", $str); // Python 是世界上最好的语言,Python 很流行

// 不区分大小写替换 echo str_ireplace("php", "Go", $str); ?> `

截取与分割

`php <?php $str = "Hello, World!";

echo substr($str, 7); // World! echo substr($str, 7, 5); // World echo substr($str, -6); // orld!(从末尾)

// 分割 $csv = "苹果,香蕉,橙子,葡萄"; $arr = explode(",", $csv); print_r($arr); // ["苹果", "香蕉", "橙子", "葡萄"]

// 合并 echo implode(" | ", $arr); // 苹果 | 香蕉 | 橙子 | 葡萄 ?> `

清理与格式化

`php <?php // 去除空白 $str = " Hello World "; echo trim($str); // "Hello World" echo ltrim($str); // "Hello World " echo rtrim($str); // " Hello World"

// 填充 echo str_pad("5", 3, "0", STR_PAD_LEFT); // 005 echo str_repeat("=-", 5); // =-=-=-=-=-=-

// 格式化数字 echo number_format(1234567.891, 2, '.', ','); // 1,234,567.89 echo sprintf("%.2f", 3.14159); // 3.14 echo sprintf("%05d", 42); // 00042 ?> `

正则表达式

`php <?php $email = "user@example.com";

// 匹配 if (preg_match('/^[\w.]+@[\w.]+\.\w{2,}$/', $email)) { echo "邮箱格式正确"; }

// 提取所有匹配 $html = '<a href="https://php.net">PHP</a> <a href="https://mysql.com">MySQL</a>'; preg_match_all('/href="([^"]+)"/', $html, $matches); print_r($matches[1]); // ["https://php.net", "https://mysql.com"]

// 替换 $str = "2024-01-15"; echo preg_replace('/(\d{4})-(\d{2})-(\d{2})/', '$3/$2/$1', $str); // 15/01/2024 ?> `

中文字符串处理

处理中文必须使用 mb_ 系列函数:

``php <?php $str = "你好,世界!";

echo mb_strlen($str); // 6(字符数) echo mb_substr($str, 0, 2); // 你好 echo mb_strtoupper("hello"); // HELLO echo mb_strpos($str, "世界"); // 3

// 确保设置编码 mb_internal_encoding("UTF-8");