使用 PHP 中的函数添加 CSS

Adding CSS using function in PHP

我尝试使用这样的统计函数将 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 这样的 CSSPath General::addCSS('admin.css'); 但我得到的只是这样的地址,这让我无法包括:C:/xampp/htdocs\new\css/admin.css。我该如何解决这个寻址问题?

您正在使用 xampp,因此文档根路径将来自 "Server"。这就是路径错误的原因。在移动到服务器之前,您需要专门指定所需的路径。

此外,如果您使用的是共享主机计划,文档根目录在大多数情况下都无法使用。使用服务器根路径设置一个常量,以便您可以像使用 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";
    }

$_SERVER['DOCUMENT_ROOT']、returns 就是这样,一个目录路径而不是 URL。如果您希望 URL 进入您的站点,请尝试使用:

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

因此,在您的情况下它将是:

$REQUEST_URI= 'css/admin.css'

$cssPath = "http://{$HTTP_HOST}{$REQUEST_URI}";

您不能将 $_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;
}

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

DOCUMENT_ROOT 将 return 只是文档路径,但是要包含 css 你需要绝对或相对 urls.You 可以尝试使用 $_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;
}