字符串基础 #
一、字符串创建 #
1.1 单引号字符串 #
单引号字符串不解析变量和转义字符(除 \' 和 \\):
php
<?php
$name = "PHP";
$str1 = 'Hello $name';
$str2 = 'Hello\nWorld';
$str3 = 'It\'s me';
$str4 = 'Path: C:\\xampp';
echo $str1;
echo $str2;
echo $str3;
echo $str4;
1.2 双引号字符串 #
双引号字符串解析变量和转义字符:
php
<?php
$name = "PHP";
$str1 = "Hello $name";
$str2 = "Hello {$name}!";
$str3 = "Line1\nLine2";
$str4 = "Tab:\tHere";
echo $str1;
echo $str2;
echo $str3;
echo $str4;
1.3 Heredoc #
类似双引号字符串,适合大段文本:
php
<?php
$name = "PHP";
$str = <<<EOT
Hello, $name!
This is a multi-line string.
Variables are parsed: $name
EOT;
echo $str;
1.4 Nowdoc #
类似单引号字符串,不解析变量:
php
<?php
$name = "PHP";
$str = <<<'EOT'
Hello, $name!
Variables are NOT parsed: $name
EOT;
echo $str;
二、转义字符 #
2.1 常用转义字符 #
| 转义字符 | 说明 |
|---|---|
| \n | 换行 |
| \r | 回车 |
| \t | 制表符 |
| \ | 反斜杠 |
| $ | 美元符号 |
| " | 双引号 |
| ' | 单引号 |
2.2 示例 #
php
<?php
echo "Line1\nLine2";
echo "Tab:\tValue";
echo "Price: \$100";
echo "Path: C:\\xampp\\php";
echo "He said \"Hello\"";
三、变量解析 #
3.1 简单语法 #
php
<?php
$name = "John";
$age = 25;
echo "Name: $name";
echo "Age: $age";
3.2 复杂语法 #
php
<?php
$user = ['name' => 'John', 'age' => 25];
echo "Name: {$user['name']}";
echo "Age: {$user['age']}";
class Person {
public $name = "John";
}
$person = new Person();
echo "Name: {$person->name}";
3.3 解析规则 #
php
<?php
$fruit = "apple";
echo "I have an $fruit";
echo "I have an {$fruit}s";
echo "I have an ${fruit}s";
四、字符串长度 #
4.1 strlen() #
php
<?php
echo strlen("Hello");
echo strlen("你好");
4.2 mb_strlen() #
php
<?php
echo mb_strlen("你好");
echo mb_strlen("Hello 世界", 'UTF-8');
五、字符串连接 #
5.1 点运算符 #
php
<?php
$str1 = "Hello";
$str2 = "World";
$result = $str1 . " " . $str2;
echo $result;
$str1 .= " PHP";
echo $str1;
5.2 复合赋值 #
php
<?php
$html = "";
$html .= "<div>";
$html .= "<h1>Title</h1>";
$html .= "</div>";
echo $html;
5.3 implode() #
php
<?php
$words = ['Hello', 'World', 'PHP'];
$sentence = implode(' ', $words);
echo $sentence;
$path = implode('/', ['app', 'views', 'home.php']);
echo $path;
六、字符串访问 #
6.1 通过索引访问 #
php
<?php
$str = "Hello";
echo $str[0];
echo $str[4];
echo $str[-1];
6.2 修改字符 #
php
<?php
$str = "Hello";
$str[0] = "J";
echo $str;
6.3 遍历字符串 #
php
<?php
$str = "Hello";
for ($i = 0; $i < strlen($str); $i++) {
echo $str[$i] . "\n";
}
foreach (str_split($str) as $char) {
echo $char . "\n";
}
七、字符串函数 #
7.1 大小写转换 #
php
<?php
$str = "Hello World";
echo strtoupper($str);
echo strtolower($str);
echo ucfirst("hello");
echo ucwords("hello world");
7.2 去除空白 #
php
<?php
$str = " Hello World ";
echo trim($str);
echo ltrim($str);
echo rtrim($str);
$str = "xHello Worldx";
echo trim($str, 'x');
7.3 反转字符串 #
php
<?php
echo strrev("Hello");
7.4 重复字符串 #
php
<?php
echo str_repeat("Ha", 3);
7.5 填充字符串 #
php
<?php
echo str_pad("Hello", 10);
echo str_pad("Hello", 10, "-");
echo str_pad("Hello", 10, "-", STR_PAD_LEFT);
echo str_pad("Hello", 10, "-", STR_PAD_BOTH);
八、字符串比较 #
8.1 strcmp() #
php
<?php
echo strcmp("abc", "abc");
echo strcmp("abc", "abd");
echo strcmp("abd", "abc");
8.2 strcasecmp() #
php
<?php
echo strcasecmp("ABC", "abc");
echo strcasecmp("abc", "ABD");
8.3 strncmp() #
php
<?php
echo strncmp("abcde", "abcfg", 3);
echo strncmp("abcde", "abcfg", 4);
九、字符串查找 #
9.1 strpos() #
php
<?php
$str = "Hello World";
echo strpos($str, "World");
echo strpos($str, "o");
echo strpos($str, "o", 5);
if (strpos($str, "World") !== false) {
echo "Found";
}
9.2 strrpos() #
php
<?php
$str = "Hello World";
echo strrpos($str, "o");
9.3 stripos() / strripos() #
php
<?php
$str = "Hello World";
echo stripos($str, "WORLD");
echo strripos($str, "O");
9.4 strstr() #
php
<?php
$email = "user@example.com";
echo strstr($email, "@");
echo strstr($email, "@", true);
十、字符串截取 #
10.1 substr() #
php
<?php
$str = "Hello World";
echo substr($str, 0, 5);
echo substr($str, 6);
echo substr($str, -5);
echo substr($str, 0, -6);
10.2 mb_substr() #
php
<?php
$str = "你好世界";
echo mb_substr($str, 0, 2);
echo mb_substr($str, 2);
十一、字符串替换 #
11.1 str_replace() #
php
<?php
$str = "Hello World";
echo str_replace("World", "PHP", $str);
$str = "a b c d e";
echo str_replace(["a", "b"], ["A", "B"], $str);
11.2 str_ireplace() #
php
<?php
$str = "Hello World";
echo str_ireplace("world", "PHP", $str);
11.3 substr_replace() #
php
<?php
$str = "Hello World";
echo substr_replace($str, "PHP", 6);
echo substr_replace($str, "Hi", 0, 5);
十二、实际应用 #
12.1 生成slug #
php
<?php
function slugify(string $text): string
{
$text = preg_replace('/[^\p{L}\p{N}\s-]/u', '', $text);
$text = preg_replace('/[\s-]+/', '-', $text);
$text = trim($text, '-');
return strtolower($text);
}
echo slugify("Hello World!");
echo slugify("PHP 是最好的语言");
12.2 截断文本 #
php
<?php
function truncate(string $text, int $length = 100, string $ending = '...'): string
{
if (mb_strlen($text) <= $length) {
return $text;
}
return mb_substr($text, 0, $length) . $ending;
}
echo truncate("This is a very long text that needs to be truncated", 20);
12.3 隐藏敏感信息 #
php
<?php
function maskEmail(string $email): string
{
$parts = explode('@', $email);
$name = $parts[0];
$domain = $parts[1];
$masked = substr($name, 0, 2) . str_repeat('*', max(strlen($name) - 2, 0));
return $masked . '@' . $domain;
}
echo maskEmail("john.doe@example.com");
十三、总结 #
本章学习了:
- 字符串创建方式
- 转义字符
- 变量解析
- 字符串长度
- 字符串连接
- 字符串访问
- 常用字符串函数
- 字符串查找和替换
下一章将学习字符串函数。
最后更新:2026-03-26