字符串函数 #
一、查找函数 #
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("<>");
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