PHP 中常用的字符串处理函数合集(实战向)

在 PHP 开发中,字符串处理几乎无处不在

  • 接口参数校验
  • 日志拼接
  • 文本截取
  • SQL / URL / JSON 处理
  • 用户输入过滤

如果不熟悉 PHP 的字符串函数,很容易写出冗长、低效、难维护的代码。

本文系统整理了PHP 中最常用、最实用的字符串处理函数,并结合真实业务场景,帮你快速掌握。



一、字符串长度

strlen($str);        // 计算字节长度
mb_strlen($str);    // 计算字符长度(推荐)

⚠️ 中文必须用 mb_strlen

mb_strlen('你好');  // 2
strlen('你好');     // 6


二、字符串截取

substr($str, 0, 5);         // 截取前5个字节
mb_substr($str, 0, 5);     // 截取前5个字符

推荐:

function str_limit($str, $length = 20, $suffix = '...')
{
    return mb_strlen($str) > $length
        ? mb_substr($str, 0, $length) . $suffix
        : $str;
}


三、字符串替换

str_replace('a', 'b', $str);

支持数组:

str_replace([' ', "\n"], '', $str);

正则替换:

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


四、字符串查找

strpos($str, 'php');     // 返回位置
str_contains($str, 'php'); // PHP8+

是否以某字符开头:

str_starts_with($str, 'http');

是否以某字符结尾:

str_ends_with($str, '.jpg');


五、大小写转换

strtoupper($str);
strtolower($str);
ucfirst($str);   // 首字母大写
ucwords($str);   // 每个单词首字母大写


六、去除空格

trim($str);
ltrim($str);
rtrim($str);

常见场景:

$username = trim($_POST['username']);


七、字符串分割与拼接

分割

explode(',', 'a,b,c');

拼接

implode(',', ['a', 'b', 'c']);


八、格式化字符串

sprintf("你好 %s,今年 %d 岁", $name, $age);

日志常用:

$log = sprintf('[%s] %s', date('Y-m-d H:i:s'), $msg);


九、字符串比较

strcmp('a', 'b');   // 0 相等
strcasecmp('a', 'A'); // 忽略大小写


十、HTML 与安全处理

htmlspecialchars($str);
strip_tags($str);

防 XSS:

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


十一、正则表达式

preg_match('/\d+/', $str);
preg_replace('/\d+/', '', $str);

示例:手机号校验

preg_match('/^1[3-9]\d{9}$/', $phone);


十二、URL 编解码

urlencode($str);
urldecode($str);


十三、JSON 字符串

json_encode($arr);
json_decode($json, true);


十四、常用字符串辅助函数封装

1. 判断是否为空字符串

function str_is_empty($str)
{
    return trim($str) === '';
}

2. 隐藏手机号

function mask_phone($phone)
{
    return substr_replace($phone, '****', 3, 4);
}

3. 高亮关键词

function highlight($text, $word)
{
    return str_replace($word, "<b>$word</b>", $text);
}


十五、业务实战示例

示例 1:用户名脱敏

echo mb_substr($name, 0, 1) . '**';

示例 2:限制评论长度

$comment = str_limit($comment, 100);

示例 3:日志格式化

$log = sprintf('[%s][%s] %s', date('H:i:s'), $level, $msg);


十六、为什么要熟练字符串函数?


优势说明
减少 Bug避免中文截断
提高效率少写循环
代码更优雅语义清晰
安全性更高防 XSS / 注入


结语

字符串处理能力,几乎决定了一个 PHP 开发者的:

  • 基础功
  • 代码质量
  • 项目健壮性