PHP字符串处理常用函数,substr、explode

前言

PHP字符串处理天天用,截取、拼接、查找、替换,每个项目都离不开。本文整理最常用的字符串函数,收藏随用随查。

一、字符串长度

strlen()

字节长度(中文算3个字节):

echo strlen('hello'); // 5
echo strlen('你好');   // 6(UTF-8每个中文3字节)

mb_strlen()

字符长度(中文算1个字符):

echo mb_strlen('你好', 'utf-8'); // 2

区别: strlen看字节,mb_strlen看字符。

二、截取字符串

substr()

$str = 'hello world';

// 从第0位取5个
echo substr($str, 0, 5); // hello

// 从第6位取到最后
echo substr($str, 6); // world

// 从倒数第5位取
echo substr($str, -5); // world

mb_substr()(中文截取)

$str = '我是中国人';

// 从第0个字符取2个
echo mb_substr($str, 0, 2, 'utf-8'); // 我是

注意: 中文一定要用mb_substr,不然会乱码。

三、查找字符串

strpos()

找位置(从左找,找到返回位置,没找到返回false):

$str = 'hello world';

echo strpos($str, 'world'); // 6

// 没找到
var_dump(strpos($str, 'abc')); // bool(false)

strrpos()

从右找:

echo strrpos('a/b/c', '/'); // 3

strstr()

找并截取:

$str = 'user@example.com';

echo strstr($str, '@'); // @example.com

str_contains()(PHP8)

var_dump(str_contains('hello world', 'world')); // bool(true)

注意: PHP8以上才有。

四、替换字符串

str_replace()

$str = 'hello world';

echo str_replace('world', 'php', $str); // hello php

str_ireplace()

不区分大小写:

echo str_ireplace('WORLD', 'php', $str); // hello php

preg_replace()

正则替换:

$str = '2026-10-09';

// 把横线换成点
echo preg_replace('/-/g', '.', $str); // 2026.10.09

五、拼接和拆分

implode()(数组转字符串)

$arr = ['a', 'b', 'c'];

echo implode(',', $arr); // a,b,c
echo implode('-', $arr); // a-b-c

explode()(字符串转数组)

$str = 'a,b,c';

$arr = explode(',', $str);
// ['a', 'b', 'c']

限制拆分次数

$str = 'a,b,c,d';

// 只拆成2段
$arr = explode(',', $str, 2);
// ['a', 'b,c,d']

六、去除空白

trim()

去首尾空格:

$str = '  hello  ';

echo trim($str); // hello

ltrim() / rtrim()

ltrim($str); // 去左边
rtrim($str); // 去右边

七、大小写转换

strtoupper('hello'); // HELLO
strtolower('HELLO'); // hello
ucwords('hello world'); // Hello World
ucfirst('hello'); // Hello

八、重复和填充

str_repeat()

echo str_repeat('ab', 3); // ababab

str_pad()

// 补到10位,右边补*
echo str_pad('123', 10, '*', STR_PAD_RIGHT); // 123*******

// 左边补
echo str_pad('123', 10, '0', STR_PAD_LEFT); // 0000000123

九、常见场景

场景1:手机号中间打星号

$phone = '13812345678';

echo substr($phone, 0, 3) . '****' . substr($phone, -4);
// 138****5678

场景2:截取文件名后缀

$file = 'photo.jpg';

echo strrchr($file, '.'); // .jpg

场景3:邮箱拆分

$email = 'user@example.com';

$name = strstr($email, '@', true); // user
$domain = strstr($email, '@');    // @example.com

场景4:URL参数解析

$url = 'https://example.com/index.php?id=1&name=zhangsan';

// 拿问号后面的
$query = parse_url($url, PHP_URL_QUERY);
// id=1&name=zhangsan

parse_str($query, $params);
// ['id' => '1', 'name' => 'zhangsan']

场景5:HTML标签转义

$str = '<script>alert(1)</script>';

echo htmlspecialchars($str);
// &lt;script&gt;alert(1)&lt;/script&gt;

十、常见坑

坑1:中文截取乱码

用substr截中文,结果乱码了。

原因: substr按字节截,中文一个字3个字节,容易截到半个字。

解决: 用mb_substr:

mb_substr($str, 0, 10, 'utf-8');

坑2:strpos===0的问题

$str = 'abc';
if (strpos($str, 'a') == false) {
    echo '没找到';
}

问题: strpos找到a在位置0,0==false是true。

解决:

if (strpos($str, 'a') === false) {
    echo '没找到';
}

注意: 一定要用===,不是==。

坑3:trim只去空格

trim默认只去空格和换行。

要去指定字符:

trim($str, "/"); // 去首尾的/

坑4:explode空字符串

$str = '';
$arr = explode(',', $str);
// [''] 不是空数组!

解决:

if ($str === '') {
    $arr = [];
} else {
    $arr = explode(',', $str);
}

总结

最常用的10个:

  1. strlen() 字符串长度(字节)
  2. mb_strlen() 字符长度(中文友好)
  3. substr() 截取字符串
  4. strpos() 查找位置
  5. str_replace() 替换
  6. explode() 字符串转数组
  7. implode() 数组转字符串
  8. trim() 去空格
  9. strtoupper() / strtolower() 大小写
  10. str_pad() 填充

记住:

  • 中文用mb_*系列函数
  • 查找用=== false判断
  • 数组字符串互转用explode/implode

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-9 07:33 

PHP 字符串处理技巧

PHP 字符串处理常用技巧

字符串处理是 PHP 开发最常用的操作,掌握这些函数,写代码效率翻倍。

1. 截取字符串

// 截取前 5 个字符
substr("hello world", 0, 5); // hello

// 截取从第 6 个开始到结尾
substr("hello world", 6); // world

// 中文字符串截取(用 mb_)
mb_substr("你好世界", 0, 2, "UTF-8"); // 你好

注意:中文要用 mb_substr,不能用 substr,否则会乱码。

2. 替换字符串

//  str_replace(替换所有)
str_replace("world", "PHP", "hello world"); // hello PHP

//  str_ireplace(不区分大小写)
str_ireplace("WORLD", "PHP", "hello world");

//  preg_replace(正则替换)
preg_replace("/\d/", "", "abc123def"); // abcdef

3. 查找字符串

// 查找位置(找不到返回 false)
strpos("hello world", "world"); // 6

// 查找最后出现位置
strrpos("hello world hello", "hello"); // 12

// 判断是否包含(PHP 8+)
str_contains("hello world", "world"); // true

// 判断开头
str_starts_with("hello world", "hello"); // true

// 判断结尾
str_ends_with("hello world", "world"); // true

4. 格式化字符串

// 去除首尾空格
trim("  hello  "); // hello

// 只去左边/右边
ltrim("  hello"); // hello
rtrim("hello  "); // hello

// 转小写/大写
strtolower("Hello"); // hello
strtoupper("hello"); // HELLO

// 首字母大写
ucfirst("hello"); // Hello

// 每个单词首字母大写
ucwords("hello world"); // Hello World

5. 字符串和数组转换

// 字符串转数组
explode(",", "a,b,c"); // ["a","b","c"]

// 数组转字符串
implode(",", ["a","b","c"]); // a,b,c

// 重复字符串
str_repeat("ab", 3); // ababab

// 字符串长度
strlen("hello"); // 5
mb_strlen("你好", "UTF-8"); // 2

6. 常用技巧

// 生成随机字符串
substr(md5(time()), 0, 8);

// 脱敏手机号
substr_replace("13812345678", "****", 3, 4); // 138****5678

// 截取摘要(带省略号)
mb_strlen($text) > 10 ? mb_substr($text, 0, 10) . "..." : $text;

// 清除 HTML 标签
strip_tags("<p>hello</p>"); // hello

总结

PHP 字符串处理核心函数:

  • 截取:substr / mb_substr
  • 替换:str_replace / preg_replace
  • 查找:strpos / str_contains
  • 格式化:trim / strtolower / ucwords
  • 转换:explode / implode

记住这些,日常开发基本够用了。


emer 发布于  2026-10-4 11:04 
'); })();