Re: [DISCUSSION] Validating regex pattern
| From: | Alexandre Daubois | Date: | Thu, 02 Oct 2025 08:15:23 +0000 |
| Subject: | Re: [DISCUSSION] Validating regex pattern | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-128766@lists.php.net to get a copy of this message | ||
Hi,
> Historically, PHP supported three regex engines (POSIX, PCRE, Oniguruma). The POSIX engine was
> dropped in PHP 7.0 and there is a draft RFC to drop support for Oniguruma [1], however, that still
> means that at this time PHP supports two different regex engines, which each have their own criteria
> for when a regex is a valid pattern, and for Oniguruma supports a multitude of regex dialects [2].
I wasn't aware of that. Thanks for the info!
> It also makes the
FILTER_VALIDATE_REGEX_PATTERN flag highly
> ambiguous as it is unclear against which engine/dialect the regex would be validated.
Indeed, the multi-engine "issue" makes it clear that it would be ambiguous.
> Maybe the error code flags returned via preg_last_error() [4]
> should be made more specific to allow for detecting when a regex function failed due to an error in
> the regex.
> Maybe the extensions should get a "throw on invalid regex" option, either via an ini
> flag, a new function parameter or via an existing function like Mp½ŠÃ‘
> .8´¸ü7[mb_regex_set_options().
I like the first solution, I like the second one even more. It would
be aligned with JSON_THROW_ON_ERROR.
> I'm not sure what the best solution is, but going with an illogical solution just to try
> and avoid the RFC process is not the way to go IMO.
The purpose isn't to avoid the RFC process, I'll write one if
necessary. I just want to gather opinions and deduct if it's necessary
:)
— Alexandre Daubois