在PHP的字符串处理场景中,去除字符串两端的多余字符是高频需求,比如用户提交表单时可能不小心在输入内容前后加了空格,或者需要清理特定格式的字符串前缀后缀。PHP内置的trim函数系列就是专门处理这类问题的工具,下面我们逐一了解它们的用法。

trim函数系列基础介绍
PHP的trim函数系列包含三个核心函数,分别对应不同的去除范围:
- trim:去除字符串左右两边的指定字符(默认去除空格类字符)
- ltrim:仅去除字符串左边的指定字符
- rtrim:仅去除字符串右边的指定字符
默认去除空格类字符
如果不传入第二个参数,三个函数默认会去除字符串两端的以下字符:普通空格、制表符(\t)、换行符(\n)、回车符(\r)、空字节符(\0)和垂直制表符(\x0B)。
下面是默认用法的示例代码:
<?php $str = " \t\n hello world \r\n "; // 去除左右两边空格类字符 $trimmed = trim($str); // 仅去除左边空格类字符 $ltrimmed = ltrim($str); // 仅去除右边空格类字符 $rtrimmed = rtrim($str); echo "原字符串长度:" . strlen($str) . "\n"; echo "trim后长度:" . strlen($trimmed) . "\n"; echo "trim后内容:" . $trimmed . "\n"; echo "ltrim后内容:" . $ltrimmed . "\n"; echo "rtrim后内容:" . $rtrimmed . "\n"; ?>
去除指定字符
如果需要去除的不是默认的空格类字符,可以传入第二个参数,指定要去除的字符列表。注意第二个参数是字符列表,不是完整的字符串匹配,函数会逐个检查字符串两端的字符是否在列表中,直到遇到不在列表中的字符为止。
比如我们要去除字符串前后的#号和空格,示例代码如下:
<?php $str = "## 这是一段带#号的内容 ##"; // 去除左右两边的#和空格 $result = trim($str, "# "); echo "处理结果:" . $result . "\n"; // 输出:这是一段带#号的内容 // 仅去除左边的#和空格 $leftResult = ltrim($str, "# "); echo "左边处理结果:" . $leftResult . "\n"; // 输出:这是一段带#号的内容 ## // 仅去除右边的#和空格 $rightResult = rtrim($str, "# "); echo "右边处理结果:" . $rightResult . "\n"; // 输出:## 这是一段带#号的内容 ?>
常见使用注意事项
- trim函数系列的第二个参数是字符集合,不是要匹配的完整字符串,比如
trim("abcde", "ab")会去除左边的a和b,得到cde,而不是只去除开头的"ab"字符串。 - 如果要去除的字符包含特殊字符,比如斜杠,需要正确转义,比如去除路径前后的斜杠:
trim("/user/home/", "/")。 - rtrim函数还有一个别名
chop,功能完全一致,可以根据编码习惯选择使用。
实际场景应用示例
比如处理用户提交的邮箱,去除前后可能的空格,再验证格式:
<?php
function checkUserEmail($input) {
// 先去除前后空格
$email = trim($input);
// 简单验证邮箱格式
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
return "邮箱格式正确:" . $email;
} else {
return "邮箱格式错误";
}
}
echo checkUserEmail(" test@ipipp.com "); // 输出:邮箱格式正确:test@ipipp.com
?>掌握trim函数系列的用法,能让我们在处理字符串时更高效,避免手动写循环判断字符的冗余代码,提升开发效率。