我有一系列PHP页面,我想使用条件逻辑对每个页面应用不同的规则。我不确定我的方法是否是最好的方法,所以我想看看社区是否有任何建议,因为这不是最好的方法。代码如下:
<?php
$nameurl = $_SERVER["REQUEST_URI"];
if ($nameurl == "/fs/about.php"){
echo "about page";
}
elseif ($nameurl == "/fs/index.php"){
echo "home page";
}
?>
理想情况下,我只想使用文件名(index.php或about.php)而不是/ fs /。我不确定是否有另一种方法在PHP中使用$ _SERVER,但似乎可能有更高效和可重用的方式来编写它。想法?
答案 0 :(得分:0)
您可以使用
// 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;
}
答案 1 :(得分:0)
要保存几行代码,您可以使用开关替换多个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
答案 2 :(得分:0)
试试这个
$nameurl = basename($_SERVER['REQUEST_URI'], '.php');
echo $nameurl, " page";
答案 3 :(得分:0)
你可以尝试:
$currentFile = $_SERVER["PHP_SELF"];
$current_filename = explode('/', $currentFile);
或
$current_filename = basename($_SERVER['REQUEST_URI']) .'php';