Ошибка в регулярных выражениях Yii2 (Kohana) в PHP7.3 и выше

Ошибка в регулярных выражениях Yii2 (Kohana) в PHP7.3 и выше

1947
Ошибка в регулярных выражениях Yii2 (Kohana) в PHP7.3 и выше

При отладке старого приложения наYii2 или Kohana можно встретить такую ошибку:

yiibaseErrorException: preg_match(): Compilation failed: 
invalid range in character class at offset 376 in .../vendor/yiisoft/yii2/web/UrlRule.php

Вывод что что-то нетак сроутами вконфигах.

Если отследить скакими конкретно роутами происходит проблема, оказалось:

preg_match('/[w-.]+/', ''); // Этот код дает ошибку в PHP версии 7.3 и выше
preg_match('/[w\-.]+/', ''); // Если экранировать дефис-всебудетОк

Дело втом, что в язвке программирования PHP7.3 и выше обновилась методика обработки регулярных выражений сPCRE наPCRE2. Вот выдержка изсписка обновлений PHP7.3:

WithPCRE2_EXTRA_BAD_ESCAPE_IS_LITERALset, escape sequences such as\swhich are valid incharacter classes, but not asthe end ofranges, were being treated asliterals. Anexample is[_-\s](but not[\s-_]because that gave anerror atthestartofarange). Now an«invalid range» error isgiven independently ofPCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL.

Помогла ли вам статья?
348 раз уже помогла
Комментарии: (0)

КАТЕГОРИИ