Re: Add form feed as a whitespace character in trim, ltrim and rtrim
| From: | Ben Ramsey | Date: | Sat, 27 Dec 2025 18:17:41 +0000 |
| Subject: | Re: Add form feed as a whitespace character in trim, ltrim and rtrim | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-129700@lists.php.net to get a copy of this message | ||
On Sat, Dec 27, 2025 at 04:40 LamentXU <lamentxu@163.com> wrote:
> Hi Internals,
>
> I have opened a Pull Request to add \f (form feed) to the list of
> characters stripped by default in trim(), ltrim(), and rtrim().
>
> Currently, the default behavior of trim() strips the following characters:
> \n, \r, \t, \v, \0, and space. The form feed character \f is notably
> missing, despite being widely recognized as a whitespace character (in
> python, rust...).
> Although I think this change aligns trim() with standard whitespace
> definitions, it is technically a backward compatibility break. I am writing
> to check if there are any strong objections to this change or if it
> requires further discussion.
>
> References*:*
>
> -
>
> Issue: *https://github.com/php/php-src/issues/20783
> <https://github.com/php/php-src/issues/20783>*
> -
>
> Pull Request: *https://github.com/php/php-src/pull/20788
>
> <https://www.google.com/search?q=https://github.com/php/php-src/pull/20788>*
>
> Thanks,
> Weilin Du
>
Notably,
mb_trim(), introduced in 8.4, includes \f in the list of
characters it trims.
https://www.php.net/mb_trim
I’m not opposed to this change, but the BC break could lead to really
difficult and tricky bugs in applications that rely on the form feed to be
retained. I can’t think of any use cases that would expect form feed to
remain after trimming, but there might be some.
On the other hand, many users might consider it a bug that form feed isn’t
trimmed, so this might be argued as a bug fix, especially since other
languages consider form feed as a whitespace character to remove in similar
situations.
I’m for this change, but on the fence about the BC break.
Cheers,
Ben