跳到主要内容

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 则让你能优雅地处理多行文字内容。掌握这些技巧,将大大提升你在项目开发中的文本处理效率。