trim()默认只去首尾空白字符,去其他字符须显式传入第二参数指定字符集,支持范围写法如'a..z'但不支持'a-z',且无法处理中间字符或unicode多字节字符需注意编码。

PHP的trim()函数默认只去除首尾的空白字符(空格、制表符、换行符等),如果想去除其他特殊字符却没效果,通常是因为没有正确指定第二个参数——要修剪的字符列表。
确认是否传入了目标字符
trim()不会自动识别你“想删什么”,必须显式告诉它。比如要去掉字符串两端的星号*或下划线_,得写成:
-
trim($str, '*')—— 只去首尾的* -
trim($str, '_')—— 只去首尾的_ -
trim($str, '*_')—— 同时去*和_(注意:是“任一字符”,不是整个子串)
注意字符范围写法(避免误用连字符)
第二个参数支持类似正则的范围表示,比如'a..z'或'0..9',但容易出错:
-
trim($str, 'a..z')是合法的,表示所有小写字母 -
trim($str, 'a-z')会字面匹配a、-、z三个字符,不是范围! - 如果真要包含短横线
-,把它放在开头或结尾:trim($str, '-a..z')
需要去除中间字符?trim不适用
trim()只处理首尾,对中间出现的字符完全无效。例如:
-
trim('a-b-c', '-')→ 结果仍是'a-b-c'(首尾不是-) - 要去掉所有
-,该用str_replace('-', '', $str) - 要按规则清理(如连续多个特殊字符只留一个),考虑
preg_replace()
中文、Unicode字符需注意编码
如果目标字符是中文、emoji或全角符号,确保脚本文件和字符串都是UTF-8编码,并且:
- 直接写字符即可:
trim($str, '【】')或trim($str, ' ')(全角空格) - 避免用
chr()拼接,它只处理单字节ASCII;UTF-8多字节字符要用原字符或mb_系列函数(但trim本身不支持mb_前缀) - 若遇到乱码导致不生效,先用
mb_detect_encoding()检查编码
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











