Прододжение темы про некорректную работу алгоритма косолидации
| 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, 13 років тому) |