Как использовать PHP внутри файла css

У меня есть файл CSS, и я хочу ссылаться на некоторые пути к изображениям в этих файлах в формате varaible PHP. Затем я ссылаюсь на этот файл css внутри html-файла. Ниже приведен мой файл

Файл CSS

<? header ("Content-type: text/css");?> body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0} 

HTML-файл

 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="css/layout.css" media="screen"> </head> 

Другие вещи. Можете ли вы объяснить мне, как это сделать?

Solutions Collecting From Web of "Как использовать PHP внутри файла css"

Если вы можете переименовать свой CSS-файл «layout.php», вам не нужно использовать все эти обходные пути:

Ваш файл layout.php будет выглядеть так:

 <?php header("Content-type: text/css; charset: UTF-8"); ?> body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0} 

Ваши HTML-файлы будут выглядеть так:

 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="css/layout.php" media="screen"> </head> 

Этот вопрос очень похож: include: css с расширением php-файла?

Я считаю, что проблема в том, что .css файл не будет интерпретироваться как PHP, поэтому ваш код в файле не будет выполнен. Если вы включили его в качестве файла PHP, ваш код должен быть выполнен и ваши значения должны быть заполнены.

[Edit] Кажется, это способ сделать это, как заметил ответ, который был связан с комментарием на исходном сообщении здесь .

Это просто, если у вас есть немного знаний по перезаписи URL.

Напишите файл .htaccess в корневом каталоге, он будет выглядеть примерно так:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^customized\.css$ css\_generator\.php [L] </IfModule> 

Теперь просто создайте файл css_generator.php с содержимым:

 <?php header('Content-type: text/css; charset: UTF-8'); ?> body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0} 

Ваш html должен выглядеть так:

 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="customized.css" media="screen"> </head> 

Понимание того, что только что произошло.

  • При загрузке страницы, когда ваш браузер загрузит customized.css, он будет перенаправлен на css_generator.php
  • содержимое css_generator.php также будет доступно как yoursite.com/customized.css

Надеюсь это поможет

Возможно, возвращаемое значение base_url() не заканчивается в разделителе путей.

Имея это в виду, попробуйте следующее:

 @import url("<?php echo base_url().'/public/';?>css/layout.css"); 

(Обратите внимание на слэш перед «public»)

  • Проверьте источник страницы через «источник просмотра» вашего браузера или аналогичный, и проверьте правильность пути в @import

или

  • Используйте регистратор запросов, аналогичный вкладке «network» devtools Chrome, чтобы узнать, какой URL-адрес вашего браузера пытается загрузить импортированный файл CSS.

Вы также просматриваете CSS через свой браузер, чтобы определить, правильно ли построено содержимое. Если вы видите <?php внутри ответа, вам нужно заставить Apache рассматривать CSS-файл, как если бы он был PHP.

Вы можете добавить что-то похожее на следующее в ваш файл .htaccess:

 <FilesMatch "\.css$"> SetHandler application/x-httpd-php Header set Content-type "text/css" </FilesMatch> 

Вы должны убедиться, что модуль Apache «mod_headers» включен, чтобы разрешить использование директивы Header .

Хотя, лично я бы переименовал такие динамические таблицы стилей, чтобы иметь расширение .php.css. Это не будет иметь никакого эффекта, но тогда Apache может быть настроен только для передачи динамических таблиц стилей в препроцессор PHP.

 <FilesMatch "\.php\.css$"> SetHandler application/x-httpd-php Header set Content-type "text/css" </FilesMatch>