#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() в качестве переменной смещения, вы найдете следующее вхождение после последнего.