Menu

PHP 字符串:引号、拼接与变量插值

用点运算符拼接 PHP 字符串("Hello, " . $name),或者把变量直接写进双引号("Hello, $name")。单引号会原样输出文本。学习字符串拼接、.=、数组和对象的插值,以及用 strtoupper、strtolower、ucfirst 和 ucwords 转换大小写。

本页包含可运行的编辑器。编辑、运行,立即查看输出。

PHP 字符串就是写在单引号或双引号里的文本。用点运算符拼接字符串:$first . ' ' . $last,或者把变量直接写进双引号:"Hello, $name"。

点运算符把任意两个值拼成一个新字符串。数字会被自动转换,所以 "Total: " . 42 就是 "Total: 42"。

单引号和双引号

双引号多做两件事:把变量替换成它的值,以及把 \n(换行)和 \t(制表符)这样的转义序列转换成对应的字符。单引号则原样输出文本,只有 \' 和 \\ 例外。

固定文本用单引号,需要在里面放变量或 \n 时用双引号。两者的速度差别小到测不出来,所以哪种让代码更好读就用哪种。

用 . 和 .= 拼接字符串

.= 把内容追加到字符串变量的末尾。在循环里逐步构建文本(比如一段 HTML)时,通常就这么写。运行这段代码,编辑器会打开“页面”标签页,显示渲染好的列表。

把 . 和算术运算混在一起时,要注意优先级。从 PHP 8 开始,+ 和 - 的优先级高于 .,所以 "Sum: " . 2 + 3 的结果是 "Sum: 5"。加上括号能让后来读代码的人一眼看明白:"Sum: " . (2 + 3)。

在字符串中放入变量、数组和对象

普通变量直接写在双引号里就能用。对于数组元素、对象属性链或方法调用,要用花括号把表达式括起来。花括号还能把变量和紧跟在后面的字母分开。

花括号里可以调用方法,但不能调用普通函数:最后一行会输出花括号和函数名,中间夹着 $fruit 的值。先在字符串外面调用函数,或者在字符串包含很多值时用 sprintf。

转换大小写:strtoupper、strtolower、ucfirst、ucwords

这些函数按字节处理,只会改变 a 到 z 这些字母。对于带重音的文字、西里尔字母或希腊字母,用支持 UTF-8 的多字节版本:

读取单个字符和重复字符串

字符串可以像数组一样用下标访问。负数偏移量从末尾开始计算。要统计字符数,请看 strlen。

常见错误:用 + 代替 .

在 JavaScript 中 + 可以拼接字符串。在 PHP 中 + 永远是算术运算:数字字符串会按数字相加,不是数字的文本会抛出错误。

如果你在本该看到拼接文本的地方看到了一个数字,或者看到 Unsupported operand types: string + string,就找找有没有一个本该是 . 的 +。

常见问题

PHP 中怎么拼接字符串?

用点运算符:$full = $first . ' ' . $last;。要在已有字符串后面追加,用 .=:$html .= '<li>Item</li>';。+ 运算符用于数字,在 PHP 8 中 "Hello" + "World" 会抛出 TypeError。

PHP 中单引号和双引号有什么区别?

双引号会替换变量和转义序列:"Hi $name\n" 输出 $name 的值和一个换行。单引号几乎原样输出一切:'Hi $name\n' 输出美元符号、name,以及一个反斜杠加 n。单引号里只有 \' 和 \\ 是转义。

怎么把数组的值放进 PHP 字符串里?

用花括号把它括起来:"Hello, {$user['name']}"。对象属性和方法调用也一样:"{$user->getName()}"。对于简单的键,不加花括号的 "$user[name]"(键不加引号)也可以。

PHP 中怎么把字符串转成大写或小写?

strtoupper('php') 返回 PHP,strtolower('PHP') 返回 php,ucfirst('hello') 把首字母大写,ucwords('hello world') 把每个单词的首字母大写。对于带重音或非拉丁字母的文本,用 mb_strtoupper() 和 mb_strtolower()。

Coddy 编程语言插图

和 Coddy 一起学编程

开始