PHP 8.0: FILTER_FLAG_SCHEME_REQUIRED
and FILTER_FLAG_HOST_REQUIRED
flags are removed
filter_var()
function used to accept two flags that were deprecated in PHP 7.3:
FILTER_FLAG_SCHEME_REQUIRED
FILTER_FLAG_HOST_REQUIRED
filter_var()
function, when used with FILTER_VALIDATE_URL
already assumed these two flags, and it was not necessary to use these flags explicitly.
Deprecated in PHP 7.3, these two flags are now removed in PHP 8.0.
$var = 'https://php.watch';
- filter_var($var, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);
- filter_var($var, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED);
- filter_var($var, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED | FILTER_FLAG_HOST_REQUIRED);
+ filter_var($var, FILTER_VALIDATE_URL);
If attempted to use these two flags, a fatal error will be thrown:
Fatal error: Uncaught Error: Undefined constant 'FILTER_FLAG_SCHEME_REQUIRED' in ...:...
Fatal error: Uncaught Error: Undefined constant 'FILTER_FLAG_HOST_REQUIRED' in ...:...
Backwards Compatibility Impact
Because the FILTER_FLAG_HOST_REQUIRED
and FILTER_FLAG_SCHEME_REQUIRED
constants are removed in PHP 8, attempting to use them will now throw a fatal error.
The easiest fix is to simply remove these two flags. filter_var()
function when used with FILTER_VALIDATE_URL
will always enforce the host-required and scheme-required condions regardless of the presence of these two flags.