【问题标题】:Adding CSS using function in PHP在 PHP 中使用函数添加 CSS
【发布时间】:2015-06-19 03:53:02
【问题描述】:

我尝试使用这样的统计函数将CSS 文件添加到我的html 文件中:

      public static function addCSS($file){
         $cssPath = $_SERVER['DOCUMENT_ROOT']. DIRECTORY_SEPARATOR. 'new'. 
         DIRECTORY_SEPARATOR. 'css/'.$file;
           return file_exists($cssPath) ? "
   <link rel=\"stylesheet\" href=\"$cssPath\" type=\"text/css\" 
    media=\"screen\" charset=\"utf-8\" />
    " : "CSS File not found";
        }

但它并没有像我预期的那样工作。我希望它在我被调用时产生类似“http:localhost/new/css/admin.css” General::addCSS('admin.css'); 但我得到的只是这样的地址,这让我无法包含:C:/xampp/htdocs\new\css/admin.css。我该如何解决这个问题?

【问题讨论】:

标签: php css relative-path


【解决方案1】:

您正在使用 xampp,因此文档根路径将来自该“服务器”。这就是为什么路径是错误的。在移至服务器之前,您需要专门指定所需的路径。

另外,如果您使用的是共享主机计划,文档根目录在大多数情况下都无法正常工作。使用服务器根路径设置一个常量,以便您可以像使用 DOCUMENT_ROOT 一样使用它。

     //Create root path
     define('ROOT', 'something/anotherthing/public_html');

     public static function addCSS($file){
     //use root path everywhere instead of document_root
     $cssPath = ROOT . DIRECTORY_SEPARATOR. 'new'. 
     DIRECTORY_SEPARATOR. 'css/'.$file;
       return file_exists($cssPath) ? "
     <link rel=\"stylesheet\" href=\"$cssPath\" type=\"text/css\" media=\"screen\" charset=\"utf-8\" />
     " : "CSS File not found";
    }

【讨论】:

    【解决方案2】:

    $_SERVER['DOCUMENT_ROOT'],仅返回目录路径而不是 URL。如果您想要您网站的 URL,请尝试使用:

    "http://{$HTTP_HOST}{$REQUEST_URI}"
    

    所以,在你的情况下,它将是:

    $REQUEST_URI= 'css/admin.css'
    
    $cssPath = "http://{$HTTP_HOST}{$REQUEST_URI}";
    

    【讨论】:

      【解决方案3】:

      您不能将$_SERVER['DOCUMENT_ROOT'] 用于$cssPath,因为它将是系统文件路径,您需要一个url。如果您真的想以这种方式实现此功能,请尝试:

      public static function addCSS( $file ){
          $css_dir =  DS . 'new'. DS . 'css'. DS;
          $css_file = $_SERVER['SERVER_NAME'] . $css_dir . $file;
          $css_file_path = $_SERVER['DOCUMENT_ROOT'] . $css_dir . $file;
          return file_exists( $css_file_path ) ? '<link rel="stylesheet" href="'.$css_file.'" type="text/css" media="screen" />' : false;
      }
      

      不过,我的建议是重新考虑您解决问题的方法。

      【讨论】:

      【解决方案4】:

      DOCUMENT_ROOT 将简单地返回文档路径,但要包含 css,您需要绝对或相对 url。您可以尝试使用 $_SERVER['HTTP_HOST']

      public static function addCSS( $file ){
          $css_dir =  DS . 'new'. DS . 'css'. DS;
          $css_file = 'http://'.$_SERVER['HTTP_HOST'] . $css_dir . $file;
          $css_file_path = $_SERVER['DOCUMENT_ROOT'] . $css_dir . $file;
          return file_exists( $css_file_path ) ? '<link rel="stylesheet" href="'.$css_file.'" type="text/css" media="screen" />' : false;
      }
      

      【讨论】:

      • 您还可以通过在标题中设置基本 html 标记来使用相对 url:($your_host 可以是 localhost、localhost/yourProject、 yourwebsite.com 等构建一个函数来推断它)然后为您的链接和资产使用相对 url...对于您的 css 它将类似于 $css_file = 'css/styles.css''
      • @ris 你的脚本解决它似乎只适用于 chrome,当我在 firefox 上运行时它无法运行。地址变为localhost\new\css\admin.css
      猜你喜欢
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 2016-06-18
      • 2011-08-23
      • 1970-01-01
      • 2015-04-19
      相关资源
      最近更新 更多