Есть код
Кодif (stripos($uri, 'admin') === false) {
if (isset($_SERVER['HTTP_ACCEPT']) && isset($_SERVER['HTTP_USER_AGENT'])) {
if( strpos( $_SERVER['HTTP_ACCEPT'], 'image/webp' ) !== false ) {
$re = '/(cache)(.*)(\.jpg|\.png|.jpeg)/U';
$subst = '$1webp$2.webp';
$this->output = preg_replace($re, $subst, $this->output);
}
}
}
Регулярка :
$re = '/(cache)(.*)(\.jpg|\.png|.jpeg)/U';
Суть проблемы: код заменяет пути картинок на .webp, если браузер клиента их поддерживает. Регулярка работает со всеми "нормальными картинками", но если путь картинки имеет такой вид :
/cache/folder1/tester/kartinka.png-270x270.jpeg
На клиенте отдаётся
/cache/folder1/tester/kartinka.webp-270x270.jpeg
Нужно, чтобы отдавалась картинка созданная в папке кеша:
/cache/folder1/tester/kartinka.png-270x270.webp
С картинками, которые имеют "нормальный путь", всё отлично работает.
Пробовал так:
$re = '/(cache)(.*)(\.jpg\z|\.png\z|.jpeg\z)/U';
После этого перестаёт работать замена со всеми картинками.
Подскажите решение, пожалуйста.