字符串函数 #

一、查找函数 #

1.1 strpos() - 查找首次出现位置 #

php
<?php
$str = "Hello World";

$pos = strpos($str, "World");
echo $pos;

$pos = strpos($str, "o");
echo $pos;

$pos = strpos($str, "o", 5);
echo $pos;

if (strpos($str, "World") !== false) {
    echo "Found";
}

1.2 strrpos() - 查找最后出现位置 #

php
<?php
$str = "Hello World";

echo strrpos($str, "o");

1.3 stripos() / strripos() - 不区分大小写 #

php
<?php
$str = "Hello World";

echo stripos($str, "WORLD");
echo strripos($str, "O");

1.4 strstr() - 查找字符串 #

php
<?php
$email = "user@example.com";

echo strstr($email, "@");
echo strstr($email, "@", true);

1.5 stristr() - 不区分大小写 #

php
<?php
$str = "Hello World";

echo stristr($str, "WORLD");

二、替换函数 #

2.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);

$count = 0;
str_replace("a", "A", "aaa", $count);
echo $count;

2.2 str_ireplace() - 不区分大小写 #

php
<?php
$str = "Hello World";

echo str_ireplace("world", "PHP", $str);

2.3 substr_replace() - 替换子串 #

php
<?php
$str = "Hello World";

echo substr_replace($str, "PHP", 6);
echo substr_replace($str, "Hi", 0, 5);
echo substr_replace($str, "Beautiful ", 6, 0);

2.4 strtr() - 字符转换 #

php
<?php
echo strtr("Hello", "el", "ip");

echo strtr("Hello World", [
    "Hello" => "Hi",
    "World" => "PHP"
]);

三、截取函数 #

3.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);
echo substr($str, -5, 3);

3.2 mb_substr() - 多字节截取 #

php
<?php
$str = "你好世界";

echo mb_substr($str, 0, 2);
echo mb_substr($str, 2);
echo mb_substr($str, 0, 2, 'UTF-8');

3.3 substr_count() - 统计出现次数 #

php
<?php
$str = "Hello Hello Hello";

echo substr_count($str, "Hello");
echo substr_count($str, "Hello", 6);

四、分割与连接 #

4.1 explode() - 分割字符串 #

php
<?php
$str = "apple,banana,cherry";

$arr = explode(",", $str);
print_r($arr);

$arr = explode(",", $str, 2);
print_r($arr);

4.2 implode() - 连接数组 #

php
<?php
$arr = ['apple', 'banana', 'cherry'];

echo implode(", ", $arr);
echo implode("-", $arr);
echo implode("", $arr);

4.3 str_split() - 分割为字符数组 #

php
<?php
$str = "Hello";

$arr = str_split($str);
print_r($arr);

$arr = str_split($str, 2);
print_r($arr);

4.4 chunk_split() - 分割为块 #

php
<?php
$str = "HelloWorld";

echo chunk_split($str, 3, "-");

$data = base64_encode(file_get_contents('image.png'));
echo chunk_split($data, 76, "\r\n");

五、大小写转换 #

5.1 strtoupper() / strtolower() #

php
<?php
echo strtoupper("hello");
echo strtolower("HELLO");

5.2 ucfirst() / lcfirst() #

php
<?php
echo ucfirst("hello");
echo lcfirst("Hello");

5.3 ucwords() #

php
<?php
echo ucwords("hello world");
echo ucwords("hello-world", "-");

5.4 mb_convert_case() #

php
<?php
echo mb_convert_case("hello world", MB_CASE_TITLE);
echo mb_convert_case("HELLO WORLD", MB_CASE_LOWER);
echo mb_convert_case("hello world", MB_CASE_UPPER);

六、去除空白 #

6.1 trim() #

php
<?php
$str = "  Hello World  ";

echo trim($str);
echo trim($str, " Hld");

6.2 ltrim() / rtrim() #

php
<?php
$str = "  Hello World  ";

echo ltrim($str);
echo rtrim($str);

6.3 去除所有空白 #

php
<?php
$str = "  Hello   World  ";

echo preg_replace('/\s+/', '', $str);
echo preg_replace('/\s+/', ' ', trim($str));

七、填充与重复 #

7.1 str_pad() #

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);

7.2 str_repeat() #

php
<?php
echo str_repeat("Ha", 3);
echo str_repeat("-", 10);

八、比较函数 #

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);

8.4 strnatcmp() - 自然排序 #

php
<?php
echo strnatcmp("img1.png", "img10.png");
echo strcmp("img1.png", "img10.png");

8.5 similar_text() - 相似度 #

php
<?php
$percent = 0;
$count = similar_text("Hello", "Hello World", $percent);

echo $count;
echo $percent;

九、反转与打乱 #

9.1 strrev() #

php
<?php
echo strrev("Hello");

9.2 str_shuffle() #

php
<?php
echo str_shuffle("Hello");

十、编码转换 #

10.1 htmlspecialchars() #

php
<?php
$str = "<script>alert('xss')</script>";

echo htmlspecialchars($str);
echo htmlspecialchars($str, ENT_QUOTES, 'UTF-8');

10.2 htmlentities() #

php
<?php
echo htmlentities("<>'\"&");

10.3 html_entity_decode() #

php
<?php
echo html_entity_decode("&lt;&gt;");

10.4 strip_tags() #

php
<?php
$str = "<p>Hello <b>World</b></p>";

echo strip_tags($str);
echo strip_tags($str, '<b>');

十一、实际应用 #

11.1 安全输出 #

php
<?php
function safeOutput(string $text): string
{
    return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}

$userInput = "<script>alert('xss')</script>";
echo safeOutput($userInput);

11.2 生成随机字符串 #

php
<?php
function randomString(int $length = 16): string
{
    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    return substr(str_shuffle(str_repeat($chars, ceil($length / strlen($chars)))), 0, $length);
}

echo randomString(8);
echo randomString(32);

11.3 验证邮箱格式 #

php
<?php
function isValidEmail(string $email): bool
{
    return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}

var_dump(isValidEmail("user@example.com"));
var_dump(isValidEmail("invalid-email"));

11.4 格式化手机号 #

php
<?php
function formatPhone(string $phone): string
{
    $phone = preg_replace('/[^0-9]/', '', $phone);
    
    if (strlen($phone) === 11) {
        return substr($phone, 0, 3) . '-' . substr($phone, 3, 4) . '-' . substr($phone, 7);
    }
    
    return $phone;
}

echo formatPhone("13812345678");
echo formatPhone("138-1234-5678");

十二、总结 #

本章学习了:

  • 查找函数:strpos、strstr
  • 替换函数:str_replace、substr_replace
  • 截取函数:substr、mb_substr
  • 分割与连接:explode、implode
  • 大小写转换:strtoupper、strtolower
  • 去除空白:trim、ltrim、rtrim
  • 填充与重复:str_pad、str_repeat
  • 比较函数:strcmp、strcasecmp
  • 编码转换:htmlspecialchars、strip_tags

下一章将学习字符串格式化。

最后更新:2026-03-26