phpstan / phpstan-strict-rules

Extra strict and opinionated rules for PHPStan
MIT License
605 stars 48 forks source link

Function preg_match() should not be used instead of str_* #153

Open janbarasek opened 2 years ago

janbarasek commented 2 years ago

Hello,

I think the preg_match() function should not be used instead of the native str_* functions (PHP 8+).

Example:

if (preg_match('/\.\./', $path) === 1) { // bad, better is str_contains()
    throw new \InvalidArgumentException('Path "' . $path . '" could not contains \'..\'.');
}

This rule should apply to cases where the first argument to preg_match() is a string literal and also contains a string of ordinary characters that have no special meaning or have been escaped correctly (the string may be a valid input for str_*).

This improvement may help to better detect old places that are better to refactor.

Thank you.