2014-02-25 35 views
0

我已经创建了一个应用程序,我想在活动页面上应用活动类。就好像如果fike的名字以me_开头,那么我怎样才能将class“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中实现解决方案。

+0

什么你的意思是“这是不正确的代码使用”?你可以用'in_array()'函数替换这行。 – Raptor

回答

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' : '')?>"> 

这将是,如果你的端口在if条件class=属性以及甚至更好,这样您就不会收到空的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

不能相信同样的答案..让我删除我的:) –

+0

如果文件名以“me_”开头,是否可以应用class“active”? –

+0

@Priyajain正则表达式 –

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 
} 
?> 
相关问题