あなたの場合、私は次のように解決します:
<?
function get_current( $nav_page ) {
$uri = $_SERVER['REQUEST_URI'];
return ( $uri == $nav_page ) ? ' id="current" ' : '';
}
?>
HTML の小さな変更:
<ul>
<li <?= get_current('/') ?> ><a>HOME</a></li>
<li <?= get_current('/page1.php') ?> ><a>PAGE 1</a></li>
<li <?= get_current('/page2.php') ?> ><a>PAGE 2</a></li>
<li <?= get_current('/page3.php') ?> ><a>PAGE 3</a></li>
<li <?= get_current('/page4.php') ?> ><a>PAGE 4</a></li>
</ul>
$_SERVER['REQUEST_URI']
絶対パスが含まれているため、パラメーターを絶対 URL に変更したことに注意してください。
編集:
を使用func_get_args()
しているため、任意の数の「ページ名.php」を のパラメーターとして受け入れる可能性がありますget_current()
。その場合、get_current
関数は次のようになります。
function get_current() {
$uri = $_SERVER['REQUEST_URI'];
if ( in_array( $uri, func_get_args() ) )
return ' id="current" ';
return '';
}
およびそれに付随する HTML:
<li <?= get_current('/', '/index.php')?> > ... </li>
EDIT2:
$_SERVER['REQUEST_URI']
ファイルがフォルダー内にあることを示しています/new/
。エンドパーツを比較するロジックを変更しました。
<?
function get_current( $nav_page ) {
$uri = $_SERVER['REQUEST_URI'];
return is_rear_match( $uri, $nav_page ) ? ' id="current" ' : '';
}
function is_rear_math( $haystack, $needle ) {
$rear = substr($haystack, -strlen($needle));
return $rear !== false && $rear === $needle;
}
?>
HTML:
<ul>
<li <?= get_current('/') ?> ><a>HOME</a></li>
<li <?= get_current('/page1.php') ?> ><a>PAGE 1</a></li>
<li <?= get_current('/page2.php') ?> ><a>PAGE 2</a></li>
<li <?= get_current('/page3.php') ?> ><a>PAGE 3</a></li>
<li <?= get_current('/page4.php') ?> ><a>PAGE 4</a></li>
</ul>