Skip to content

PHP 字符串

字符串(String)是一系列字符,用于表示文本。在 PHP 中,可以使用单引号('...')、双引号("...")或 heredoc/nowdoc 语法创建字符串。

双引号("")和 heredoc 允许变量插值(variable interpolation)和处理转义序列(escape sequences,例如 \n 表示换行),而单引号('')和 nowdoc 则几乎按字面意思处理内容。

PHP 提供了庞大的函数库用于字符串操作。这里列出了一些最常用的函数:

strlen() 函数返回字符串的字节长度(对于像 UTF-8 这样的多字节编码,不一定等于字符数)。

对于使用多字节编码(例如 UTF-8)进行准确的字符计数,请使用 mb_strlen()。

<?php
$string = "Hello world!";
echo strlen($string); // 输出:12
$utf8String = "你好世界"; // UTF-8 编码的字符串
echo strlen($utf8String); // 输出:12 (字节)
echo mb_strlen($utf8String, 'UTF-8'); // 输出:4 (字符)
?>

str_word_count() 函数计算字符串中的单词数。

<?php
$sentence = "This is a simple sentence.";
echo str_word_count($sentence); // 输出:5
?>

strrev() 函数反转字符串。注意:此函数基于字节操作,可能无法正确处理多字节字符编码。

<?php
$text = "Hello world!";
echo strrev($text); // 输出:!dlrow olleH
?>

strpos() 函数查找子字符串在字符串中第一次出现的数字位置(区分大小写)。它返回起始位置索引(基于 0),如果未找到子字符串,则返回 false。

重要提示:检查 strpos() 的返回值时,请务必使用严格比较运算符(=== 或 !==),因为在宽松比较(==)中,位置 0 会被判定为 false。

PHP 8 引入了 str_contains(),它返回布尔值(true/false),对于仅检查是否存在通常更具可读性。

<?php
$haystack = "Hello world!";
$needle = "world";
$position = strpos($haystack, $needle);
if ($position !== false) {
echo "Found '$needle' at position: $position"; // 输出:在位置 6 找到 'world'
} else {
echo "'$needle' not found.";
}
// 使用 str_contains() (PHP 8+)
if (str_contains($haystack, $needle)) {
echo "\nThe haystack contains the needle."; // 输出:haystack 包含 needle。
}
?>

其他有用的搜索函数包括 stripos()(不区分大小写的 strpos)、strrpos()(查找最后一次出现)、strripos()(不区分大小写的最后一次出现)、strstr()(查找第一次出现并返回字符串的其余部分)、str_starts_with() (PHP 8+) 和 str_ends_with() (PHP 8+)。

str_replace() 函数替换搜索字符串在目标字符串中的所有出现(区分大小写)。

<?php
$original = "Hello world!";
$updated = str_replace("world", "PHP", $original);
echo $updated; // 输出:Hello PHP!
?>

对于不区分大小写的替换,请使用 str_ireplace()。

标准 PHP 字符串函数以字节为单位操作。如果你正在处理像 UTF-8 这样的多字节字符编码(强烈推荐用于 Web 应用程序),你应该使用多字节字符串扩展(Multibyte String extension,通常默认启用)中相应的 mb_* 函数。

示例:mb_strlen()、mb_strpos()、mb_substr()、mb_strtolower()、mb_strtoupper()。

<?php
$utf8String = "你好世界";
// 正确的长度
echo mb_strlen($utf8String, 'UTF-8'); // 输出:4
// 正确的子字符串
echo mb_substr($utf8String, 0, 2, 'UTF-8'); // 输出:你好
?>

这只是一小部分精选。PHP 提供了更多函数用于诸如转换大小写、移除空白符、格式化、分割、连接字符串等任务。

如需所有字符串函数的完整参考,包括描述和示例,请查阅 PHP.net 上提供的官方 PHP 文档。