我有一系列PHP页面,我想使用条件逻辑对每个页面应用不同的规则。我不确定我的方法是否是最好的方法,所以我想看看社区是否有任何建议,因为这感觉不是最好的方法。代码如下:
<?php
$nameurl = $_SERVER["REQUEST_URI"];
if ($nameurl == "/fs/about.php"){
echo "about page";
}
elseif ($nameurl == "/fs/index.php"){
echo "home page";
}
?>
理想情况下,我只想使用文件名(索引.php或大约.php)而不是/fs/。我不确定是否有另一种方法可以在 PHP 中使用 $_SERVER,但似乎可能有更有效和可重用的方法来编写它。思潮?
您可以使用
// get script name
$script = explode('/', $_SERVER['PHP_SELF']);
$scriptname = $script[count($script) - 1];
switch ($scriptname) {
case "index.php":
// Something you only want to show on this page
break;
case "about.php":
// Something you only want to show on this page
break;
}
为了节省几行代码,你可以用开关替换多个ifs:
http://php.net/manual/en/control-structures.switch.php
$nameurl = $_SERVER["REQUEST_URI"];
switch ($nameurl) {
case "/fs/about.php":
echo "about page";
break;
case "/fs/index.php":
echo "home page";
break;
default:
echo "unknown page";
break;
}
使将来添加新案例变得更加容易,但它本质上是在做同样的事情......
也许有办法让它更加优化,但我认为如果你开始做得太多,你就失去了轻松理解代码中发生的事情的能力,所以除非你评论你在做什么,否则未来看着你的工作的人会诅咒你。 :P
试试这个
$nameurl = basename($_SERVER['REQUEST_URI'], '.php');
echo $nameurl, " page";
http://php.net/manual/en/function.basename.php
你可以试试:
$currentFile = $_SERVER["PHP_SELF"];
$current_filename = explode('/', $currentFile);
或
$current_filename = basename($_SERVER['REQUEST_URI']) .'php';