字符串基础 #

一、字符串创建 #

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