编程

PHP 8.6:trim、ltrim、rtrim 和 chop 函数现在默认移除换页符(\f)

9 2026-08-18 16:46:00

PHP 支持 trimltrimrtrim 以及作为 rtrim 别名的 chop 函数,这些函数能够移除给定字符串开头、结尾或两端的空白字符及其他指定字符。

所有这些函数均支持第二个参数,名为 $characters;该参数默认为一组常用的待移除字符列表:

trim(string $string, string $characters = " \n\r\t\v\x00"): string

请注意,尽管 $characters 被设置为单个字符串,但它实际上充当了字符掩码,会移除该字符串中包含的所有字符。

字符字符名ASCII 16 进制数
" "空格0x20
"\n"换行0x0A
"\r"回车0x0D
"\t"水平制表符0x09
"\v"垂直制表符0x0B
"\0"NUL0x00

此列表中缺少一个重要的字符:换页符(“\f”),其 ASCII 码为 0x0C。

自 PHP 8.6 及更高版本起,以下所有函数的默认 $characters 参数均已更新,以包含换页符:

  • trim
  • ltrim
  • rtrim(包括别名 chop)。

相应地,函数概要已更新如下:

- trim(string $string, string $characters = " \n\r\t\v\x00"): string
+ trim(string $string, string $characters = " \f\n\r\t\v\x00"): string

以下是这些函数默认裁剪(trim)的完整字符列表:

 

字符字符名ASCII 16 进制数
" "空格0x20
"\n"换行0x0A
"\r"回车0x0D
"\t"水平制表符0x09
"\v"垂直制表符0x0B
"\0"NUL0x00

向后兼容性影响

自 PHP 8.6 及更高版本起,对于未传入 $characters 参数的 trimltrimrtrimchop 函数调用,除了原有的待移除字符列表外,还将额外移除换页符(Form-Feed character)。

这些函数通常用于移除用户输入的字符串、文本文件内容或从其他来源获取的字符串中多余的空格和换行符;在此基础上,将换页符也一并移除被视为一种理想的行为。

如果应用在调用上述函数时需要有意保留换页符,则必须显式传入 $characters 参数,以确保这些函数在所有 PHP 版本中都能保持一致的行为。除非应用程序确实需要保留换页符,否则不建议采取此操作。

 trim($string);
 trim($string, characters: " \n\r\t\v\x00");