- проблема не в регулярном выражении, оно отрабатывает нормально (по крайней мере с последними правками).
- проблема в логике строк 4005-4007, т.к. на выходе имеем пустой $filename и как следствие выход из цикла без замены кода в CSS.
Теперь подробнее...
В итоге на одном (для примера) из шагов цикла имеем (строки 4005-4007) следующие входные данные:
$path = 'plugins/ratings/tpl/ratings.css'; $relative_path = '\plugins\ratings\tpl'; $m[2] = '../../../images/icons/default/delete.png';
т.е. учитывая путь в $m[2] мы на выходе должны иметь строку 'images/icons/default/delete.png', однако в строке 4006 происходит обнуление $filename (дальше естественно алгоритм уже «правильно» не работает).
Стал копать дальше пришел к выводу, что проблема в функции realpath(), для которой (по видимому) очень важно в каком формате передается путь. Т.к. у меня тестовый сервер работает под Windows, то часть путей (традиционно) имеют формат с обратным слэшем ("C:\dvp\VertrigoServ\www\sites\cot98\plugins\ratings\tpl").
В моем примере (в строке 4006) получается realpath('\plugins\ratings\tpl/../../../images/icons/default/delete.png') возвращает false.