PHP 字符串处理:常用函数和最佳实践指南
时间:2026-10-4 10:12 作者:emer 分类: 无
前言
字符串处理是 PHP 开发中最常用的操作之一。很多人写了很多年代码,却还是用错字符串函数。本文整理最常用的字符串处理函数和最佳实践。
一、字符串长度
strlen()
<?php
$str = "hello";
echo strlen($str); // 5
注意:strlen 按字节算,中文会出问题。
mb_strlen()
<?php
$str = "你好";
echo mb_strlen($str, 'UTF-8'); // 2
echo strlen($str); // 6(3个字节一个汉字)
记住:处理中文一定要用 mb_ 系列函数。
二、字符串查找
strpos()
查找字符串第一次出现的位置:
<?php
$str = "hello world";
$pos = strpos($str, "world");
echo $pos; // 6
坑: 如果没找到返回 false,如果找到的位置是 0,也返回 0。
<?php
// 错误写法
if (strpos($str, "hello")) {
// 如果 hello 在第 0 位,这里不会执行
}
// 正确写法
if (strpos($str, "hello") !== false) {
// 这样才对
}
strrpos()
查找字符串最后一次出现的位置。
stripos() / strripos()
不区分大小写的查找。
三、字符串替换
str_replace()
<?php
$str = "hello world";
echo str_replace("world", "PHP", $str); // hello PHP
数组替换:
<?php
echo str_replace(
["hello", "world"],
["hi", "PHP"],
"hello world"
); // hi PHP
substr_replace()
替换字符串的一部分:
<?php
echo substr_replace("hello world", "PHP", 6); // hello PHP
preg_replace()
正则替换:
<?php
// 把多个空格变成一个
echo preg_replace('/\s+/', ' ', "hello world"); // hello world
四、字符串截取
substr()
<?php
$str = "hello world";
echo substr($str, 0, 5); // hello
echo substr($str, 6); // world
中文截取要用 mb_substr():
<?php
$str = "你好世界";
echo mb_substr($str, 0, 2, 'UTF-8'); // 你好
五、字符串分割与连接
explode()
<?php
$str = "a,b,c,d";
$arr = explode(",", $str);
print_r($arr); // ['a', 'b', 'c', 'd']
implode() / join()
<?php
$arr = ['a', 'b', 'c'];
echo implode(",", $arr); // a,b,c
六、字符串去空格
trim()
<?php
$str = " hello ";
echo trim($str); // "hello",去掉两边空格
echo ltrim($str); // "hello ",去掉左边空格
echo rtrim($str); // " hello",去掉右边空格
七、大小写转换
<?php
$str = "Hello World";
echo strtolower($str); // hello world
echo strtoupper($str); // HELLO WORLD
echo ucfirst($str); // Hello world
echo ucwords($str); // Hello World
八、HTML 转义
htmlspecialchars()
输出到 HTML 时一定要转义,防止 XSS:
<?php
$str = "<script>alert('xss')</script>";
echo htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
// 输出 <script>alert('xss')</script>
htmlentities()
更彻底的转义,把所有 HTML 都转义。
九、JSON 处理
json_encode()
<?php
$arr = ['name' => '张三', 'age' => 18];
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
// {"name":"张三","age":18}
记住:加 JSON_UNESCAPED_UNICODE,不然中文会变成 \uXXXX。
json_decode()
<?php
$json = '{"name":"张三","age":18}';
$obj = json_decode($json); // 对象
$arr = json_decode($json, true); // 数组
十、常见坑
- strpos 用 == 判断:位置 0 和 false 会混淆
- 中文用 strlen/substr:按字节算,中文会乱码
- 输出 HTML 不转义:XSS 漏洞
- json_encode 不加 JSON_UNESCAPED_UNICODE:中文变 \uXXXX
- 字符串拼接用 . 不用 +:PHP 是 . 号
总结
PHP 字符串处理的核心要点:
- 中文用 mb_ 系列函数,不要用 strlen/substr
- strpos 用 !== false 判断,不要用 ==
- 输出 HTML 一定要 htmlspecialchars 转义
- json_encode 加 JSON_UNESCAPED_UNICODE
- 字符串拼接用 . 号,不要用 + 号
掌握这些,字符串处理就不会出大问题了。