base_convert should throw a ValueError on characters not valid in number base

php.internals

Sjoerd Langkemper

71 days ago
Hello, Functions that convert from one number base to another should only accept characters valid in that number base. E.g. only 0-9, a-f are allowed for hexadecimal, so what should hexdec('z') do? In the past, such characters were silently ignored. Since PHP 7.4 a deprecation notice would be generated, as a result of this RFC: https://wiki.php.net/rfc/base_convert_improvements. That RFC also proposed throwing an exception as of PHP 8.0, but that was never implemented. I propose to throw a ValueError for invalid characters starting in PHP 8.6. I added this to the Grouped ValueError Conversions for PHP 8.6 RFC: https://wiki.php.net/rfc/php86_valueerror_conversions#throw_error_for_invalid_characters_for_number_base This applies to bindec, octdec, hexdec, and base_convert. Regards, Sjoerd Langkemper

Sjoerd Langkemper

18 days ago
On Mon, Jun 22, 2026, at 11:21, Sjoerd Langkemper wrote:
> I propose to throw a ValueError for invalid characters ... This applies to bindec, octdec, hexdec, and base_convert.
I created a new RFC for this: https://wiki.php.net/rfc/throw_error_for_invalid_characters_for_number_base It was originally in the "Grouped ValueError Conversions for PHP 8.6" RFC, but that wasn't voted on in time. Regards, Sjoerd