wp-cli / php-cli-tools

A collection of tools to help with PHP command line utilities
MIT License
673 stars 118 forks source link

Use preg_split instead of preg_match with quantifiers in safe_substr. #123

Closed gitlost closed 7 years ago

gitlost commented 7 years ago

Fixes wp-cli/db-command#54

Uses preg_split() instead of preg_match() with quantifiers in safe_substr() to avoid 65535 limit on quantifiers (regexp.reference.repetition), encountered for large strings.

Also normalizes the $start arg so its behaviour is the same no matter which substr method gets used.

Also checks that mb_substr() is available before using it in _safe_substr_eaw().

The following was noticed in testing and is unrelated so can do in a separate PR to reduce churn if desirable:

Also adds check that $encoding doesn't evaluate to false before passing it to mbstring functions as they can fail otherwise (seems to be system dependent).