PHP 字符串
在 PHP 中,字符串(String) 是一系列字符的集合,是最常用的数据类型之一。无论你是在构建动态网页、处理用户输入,还是与数据库交互,字符串操作都必不可少。简单来说,字符串就是由字符组成的一系列文本。在 PHP 中,你可以使用单引号('
)或双引号("
)来创建字符串。
创建字符串
使用单引号(' ')
- 内容原样输出,不会解析变量 和大多数转义字符(除了
\\
和\'
)。 - 性能稍高,适合静态内容。
示例:
<?php
$str1 = "Hello World!";
$str2 = '你好,PHP!';
?>
使用双引号(" ")
- 会解析变量 和 常见转义字符(如
\n
、\t
)。 - 更灵活,适合需要插入变量的场景。
示例:
$name = "小明";
echo "你好,$name"; // 输出:你好,小明
echo '你好,$name'; // 输出:你好,$name
PHP 中双引号和单引号的最大区别在于:双引号会解析变量和转义字符,单引号则不会。
字符串连接
你可以使用点号(.
)将多个字符串拼接在一起。
示例:
<?php
$firstName = "小明";
$lastName = "张";
$fullName = $lastName . $firstName;
echo $fullName; // 输出:张小明
?>
计算长度与字符数
如果你想要计算字符串长度与字符数,可以使用 strlen()
和 mb_strlen()
函数。
strlen()
:返回字节数,不支持中文字符长度统计(GBK/UTF-8 编码下一个中文字符占多个字节)。mb_strlen()
:支持多字节字符,需要开启mbstring
扩展。
echo strlen("你好"); // 输出 6(UTF-8 编码下)
echo mb_strlen("你好"); // 输出 2(每个汉字算一个)
常用字符串函数
PHP 提供了大量操作字符串的内置函数,这些是你最常用也最实用的:
函数名 | 描述 |
---|---|
strlen() | 获取字符串长度(以字节为单位) |
mb_strlen() | 获取多字节字符串长度(以字符为单位) |
str_word_count() | 统计单词数(适用于英文) |
strrev() | 反转字符串 |
strpos() | 查找子字符串首次出现的位置 |
str_replace() | 替换字符串中的某个部分 |
substr() | 获取子字符串 |
trim() | 去除字符串两端的空格 |
explode() | 按指定分隔符将字符串转成数组 |
implode() | 将数组元素合并为字符串(反函数:join() ) |
nl2br() | 将换行符 \n 转换为 <br> (适合 HTML 输出) |
strtoupper() | 将字符串转换为大写 |
strtolower() | 将字符串转换为小写 |
示例:字符串函数实践
<?php
$str = " Hello, PHP World! ";
// 去除首尾空格
echo trim($str); // 输出 "Hello, PHP World!"
// 获取长度
echo strlen($str); // 输出 19(包括空格)
// 查找子串
echo strpos($str, "PHP"); // 输出 8
// 替换
echo str_replace("PHP", "JavaScript", $str); // 输出 " Hello, JavaScript World! "
// 截取
echo substr($str, 7, 3); // 输出 "PHP"
?>
字符串格式化
类似于 C 语言,你可以使用 printf()
和 sprintf()
函数来格式化字符串内容,精准控制字符串的输出格式。
<?php
$price = 49.99;
printf("价格:%.2f 元", $price); // 输出:价格:49.99 元
$txt = sprintf("你好,%s!", "PHP");
echo $txt; // 输出:你好,PHP!
?>
多行字符串(Heredoc 和 Nowdoc)
PHP 中提供了 Heredoc 和 Nowdoc 两种多行字符串语法,适用于输出 HTML、SQL 语句等大段文字内容。当你需要输出一大段带格式的文本,Heredoc 和 Nowdoc 是更好的选择。
Heredoc(支持变量解析)
Heredoc 的行为类似双引号,支持变量解析。结束符必须独占一行,且不能缩进,结尾不能有分号以外的内容。
特点:
- 可以嵌套变量
- 支持换行、HTML 标签等内容
- 适合构建模板
示例:
<?php
$name = "小明";
$text = <<<EOD
你好,$name!
欢迎学习 PHP。
EOD;
echo $text;
?>
Nowdoc(不解析变量)
Nowdoc 的行为类似单引号,不会解析变量。语法几乎和 Heredoc 一致,只是起始标识符用单引号包裹。
特点:
- 内容完全按字面量处理
- 适合输出带
$
或复杂符号的模板片段(如正则表达式、SQL 脚本等)
示例:
<?php
$name = "小明";
$text = <<<'EOD'
你好,$name!
欢迎学习 PHP。
EOD;
echo $text;
?>
小结
字符串是 PHP 中最核心的数据类型之一。你可以使用单/双引号创建字符串,使用各种函数如 strlen()
、str_replace()
、substr()
、printf()
操作和格式化内容。而 Heredoc 和 Nowdoc 则让你能优雅地处理多行文字内容。掌握这些技巧,将大大提升你在项目开发中的文本处理效率。