如何根据文件名应用类?

时间:2014-02-25 06:30:43

标签: php css

我创建了一个应用程序,我想在活动页面上应用活动类。就像fike名称以me_开头一样,那我怎样才能将类“active”应用于它。

这是我的代码:

$pageAttr       =   basename($_SERVER['REQUEST_URI']);  
$files          =   array("me_dashboard.php","me_my_team.php","me_others.php","me_inbox.php","me_outbox.php"); 


<li class="<?php echo($pageAttr == $files[0] || $pageAttr == $files[1] || $pageAttr == $files[2] || $pageAttr == $files[3] || $pageAttr == $files[4]) ? "active":"" ?>"><a href="me_dashboard.php"><i class="icon-user icon-large"></i> Me</a></li>

这不是正确的代码。请建议我用PHP实现解决方案的其他方法。

2 个答案:

答案 0 :(得分:2)

如果你有这样的文件数组

$files = array("me_dashboard.php",
                "me_my_team.php",
                "me_others.php",
                "me_inbox.php",
                "me_outbox.php"
          ); 

比你可以使用in_array()

<li class="<?php echo (in_array(basename($_SERVER['PHP_SELF']), $files) ? 'active' : '')?>">

如果您在class=条件中移植if属性会更好,这样您就不会获得空的class=""标记。


如果您想更多地重构代码,请考虑将整个代码移至function,然后return将条件移至true


如评论所示,您希望获取文件的前缀,而不是使用substr()

<?php
    $page_name = 'me_dashboard.php';
    $fetch_prefix = substr($page_name, 0, 3);
    echo $fetch_prefix;
?>
<li class="<?php echo (($fetch_prefix == 'me_') ? 'active' : '')?>">A</li>

Demo - Code

答案 1 :(得分:1)

你可以尝试这个

<?php
$pageAttr       =   basename($_SERVER['REQUEST_URI']);  
$files          =   array("me_dashboard.php","me_my_team.php","me_others.php","me_inbox.php","me_outbox.php"); 

foreach($files as $file)
{
    $class_text = "";
    if($file==$pageAttr)
    {
        $class_text = ' class="active" ';
    }
    ?>
        <li <?php echo $class_text;?> ><a href="<?php echo $file;?>"><i class="icon-user icon-large"></i> Me</a></li>
    <?php
}
?>