根据 URL 设置 Body 的 ID

Avatar of Chris Coyier
Chris Coyier
<?php
	$url = explode('/',$_SERVER['REQUEST_URI']);
	$dir = $url[1] ? $url[1] : 'home';
?>

<body id="<?php echo $dir ?>">

这会将 http://domain.tld/blog/home 转换为 “blog”(URL 结构的第二级)。如果位于根目录,则会返回 “home”。

以下是一种替代方法

<?php
       $page = $_SERVER['REQUEST_URI'];
       $page = str_replace("/","",$page);
       $page = str_replace(".php","",$page);
       $page = str_replace("?s=","",$page);
       $page = $page ? $page : 'index'
?>

这会将 http://domain.tld/blog/home 转换为 “domaintldbloghome”,这更加具体。它还会删除“.php”文件扩展名和默认的 WordPress 搜索参数。

更安全的方法

function curr_virtdir($echo=true){
        $url = explode('/',$_SERVER['REQUEST_URI']);
        $dir = $url[1] ? $url[1] : 'home'; // defaults to this if in the root
        $dir = htmlentities(trim(strip_tags($dir))); // prevent injection into the DOM through this function
        if ($echo) echo $dir;
        return echo $dir; // ie. curr_virtdir(false)
}
function get_curr_virtdir(){
        curr_virtdir(false);
}

返回“中间”目录值

在 https://css-tricks.org.cn 上,它将返回“home
在 https://css-tricks.org.cn/snippets 上,它将返回“snippets
在 https://css-tricks.org.cn/forums/viewforum.php?f=6 上,它将返回“forums

strip_tags() 和 htmlentities() 函数可防止恶意代码插入 URL 并运行,例如:

<body id="foo"><script>alert("Booo");</script>

用于设置 Body ID 的用法

<body id="<?php curr_virtdir(); ?>">

其他用法

<?php
  if ( get_curr_virtdir() == "store" ){
    echo "Welcome to our awesome store !";
  } elseif ( get_curr_virtdir() == "home" ){
    echo "Welcome home :-)";
  } else {
    echo "Welcome on some other page";
  }
?>