Прододжение темы про некорректную работу алгоритма косолидации
Macik |
|
---|---|
Установил последнее исправление №914 Не помогло. Включил отладку и залез в код. Вот, что выясняется: if (preg_match_all('#\burl\((\'|")?([^\)"\']+)\1?\)#i', $file_code, $mt, PREG_SET_ORDER)) { foreach ($mt as $m) { $filename = empty($relative_path) ? $m[2] : $relative_path . '/' . $m[2]; $filename = str_replace($current_path, '', realpath($filename)); if (!$filename) { continue; } if ($filename[0] === '/') { $filename = mb_substr($filename, 1); } $file_code = str_replace($m[0], 'url("' . $filename . '")', $file_code); } }
- проблема не в регулярном выражении, оно отрабатывает нормально (по крайней мере с последними правками). Теперь подробнее... В итоге на одном (для примера) из шагов цикла имеем (строки 4005-4007) следующие входные данные:
Стал копать дальше пришел к выводу, что проблема в функции
В моем примере (в строке 4006) получается Поэкпериментировал:
и только когда все слэши идут в одном формате и без открывающего слеша работает правильно:
Так что, как решение проблемы надо проверять (и отрезать) ведущий слэш в Добавлено 3 минуты спустя:
Да, и в https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
|
Отредактировано: Macik (17.05.2012 12:35, 12 лет назад) |