Skip to content

✨ PHP 8.1: New PHPCompatibility.ParameterValues.NewHTMLEntitiesFlagsDefault sniff#1419

Merged
wimg merged 1 commit intodevelopfrom
php-8.1/new-htmlentitiesflagdefault-sniff
Dec 5, 2022
Merged

✨ PHP 8.1: New PHPCompatibility.ParameterValues.NewHTMLEntitiesFlagsDefault sniff#1419
wimg merged 1 commit intodevelopfrom
php-8.1/new-htmlentitiesflagdefault-sniff

Conversation

@jrfnl
Copy link
Member

@jrfnl jrfnl commented Dec 5, 2022

htmlspecialchars(), htmlentities(), htmlspecialchars_decode(),
html_entitity_decode() and get_html_translation_table() now use
ENT_QUOTES | ENT_SUBSTITUTE rather than ENT_COMPAT by default. This means
that ' is escaped to ' while previously it was left alone.
Additionally, malformed UTF-8 will be replaced by a Unicode substitution
character, instead of resulting in an empty string.

Refs:

This new sniff will detect and flag use of these function without explicitly passing the $flags parameter when testVersion includes both PHP < 8.1 as well as PHP 8.1+.

Note: the extra ENT_HTML401 addition is a documentation-only change as the value of the constant is 0, so has no effect on the bitwise value of the flag.

Includes unit tests.
Includes sniff documentation.

Related to #1299

…Default` sniff

> htmlspecialchars(), htmlentities(), htmlspecialchars_decode(),
> html_entitity_decode() and get_html_translation_table() now use
> ENT_QUOTES | ENT_SUBSTITUTE rather than ENT_COMPAT by default. This means
> that ' is escaped to &#39; while previously it was left alone.
> Additionally, malformed UTF-8 will be replaced by a Unicode substitution
> character, instead of resulting in an empty string.

Refs:
* https://github.com/php/php-src/blob/28a1a6be0873a109cb02ba32784bf046b87a02e4/UPGRADING#L149-L154
* php/php-src@50eca61

This new sniff will detect and flag use of these function without explicitly passing the `$flags` parameter when `testVersion` includes both PHP < 8.1 as well as PHP 8.1+.

Note: the extra `ENT_HTML401` addition is a documentation-only change as the value of the constant is `0`, so has no effect on the bitwise value of the flag.

Includes unit tests.
Includes sniff documentation.
@wimg wimg merged commit 483db6f into develop Dec 5, 2022
@wimg wimg deleted the php-8.1/new-htmlentitiesflagdefault-sniff branch December 5, 2022 12:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants