PHP чтение CSS @импорт файлов

#php #css #import

#php #css #импорт

Вопрос:

Если у меня есть файл CSS (main.css) со следующим содержимым:

 @import url('../styles/global/reset.css');
@import url('/styles/themes/helloWorld/structure.css');
@import url('/styles/themes/helloWorld/presentation.css');
  

Возможно ли создать PHP-файл, в котором указано местоположение main.css, и заставить его прочитать все импортированные файлы?

Я полагаю, я начну с чего-то вроде этого:

 $handle = fopen($_SERVER['DOCUMENT_ROOT'] . '/styles/themes/helloWorld/main.css', 'r');
  

Ответ №1:

Попробуйте синтаксический анализатор PHP CSS — https://github.com/sabberworm/PHP-CSS-Parser

 $oCssParser = new CSSParser(file_get_contents('somefile.css'));
$oCssDocument = $oCssParser->parse();
  

Комментарии:

1. Итак, я новичок в PHP :/ В документах говорится: «используйте getContents(), затем выполните итерацию по этой коллекции и используйте instanceof, чтобы проверить, имеете ли вы дело с другим CSSImport». У меня есть следующее: $oCssParser = new CSSParser(file_get_contents('import.test.css')); $oCssDocument = $oCssParser->parse(); getContents($oCssDocument); Есть ли шанс, что вы могли бы оказать дополнительную помощь? СПАСИБО

Ответ №2:

Вы должны быть в состоянии решить проблему с помощью strpos (), чтобы найти «@import url (» и substr() для извлечения имени файла. Тогда вы могли бы просто получить содержимое файлов с помощью file_get_contents() . Кроме того, если вы передадите последнюю позицию strpos() в качестве переменной смещения, вы найдете следующее вхождение после последнего.