PHP 8.6:trim、ltrim、rtrim 和 chop 函数现在默认移除换页符(\f)
PHP 支持 trim、ltrim、rtrim 以及作为 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" | NUL | 0x00 |
此列表中缺少一个重要的字符:换页符(“\f”),其 ASCII 码为 0x0C。
自 PHP 8.6 及更高版本起,以下所有函数的默认 $characters 参数均已更新,以包含换页符:
trimltrimrtrim(包括别名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" | NUL | 0x00 |
向后兼容性影响
自 PHP 8.6 及更高版本起,对于未传入 $characters 参数的 trim、ltrim、rtrim 和 chop 函数调用,除了原有的待移除字符列表外,还将额外移除换页符(Form-Feed character)。
这些函数通常用于移除用户输入的字符串、文本文件内容或从其他来源获取的字符串中多余的空格和换行符;在此基础上,将换页符也一并移除被视为一种理想的行为。
如果应用在调用上述函数时需要有意保留换页符,则必须显式传入 $characters 参数,以确保这些函数在所有 PHP 版本中都能保持一致的行为。除非应用程序确实需要保留换页符,否则不建议采取此操作。
trim($string);
trim($string, characters: " \n\r\t\v\x00");