The function utf8_decode() was a shortcut to convert strings
encoded from UTF-8 to ISO-8859-1 ("Latin 1").
This function was deprecated since PHP 8.2 and will be dropped
in PHP 9:
https://wiki.php.net/rfc/remove_utf8_decode_and_utf8_encode
As mentioned in the RFC, if a $string is a valid UTF-8 string,
so this could be used to count the number of code points:
strlen(utf8_decode($string))
It works because any unmappable code point is replaced with the
single byte '?' in the output. But, the correct native approach
should be this one:
mb_strlen($string, 'UTF-8');
Also, another good approach is this one:
iconv_strlen($string, 'UTF-8')
Note that mb_strlen() was introduced in PHP 4, so, there
are no compatibility issues in using that.
Note that the mbstring extension is already required in the installation
documentation, so this should not change anything for any person.
https://we.phorge.it/T15188
https://wiki.php.net/rfc/remove_utf8_decode_and_utf8_encode
https://www.php.net/manual/en/function.utf8-decode
https://www.php.net/manual/en/function.mb-convert-encoding.php
https://github.com/rectorphp/rector/blob/main/docs/rector_rules_overview.md#utf8decodeencodetombconvertencodingrector
Closes T15188