0

一連の PHP ページがあり、条件ロジックを使用して各ページに異なるルールを適用したいと考えています。私の方法が最善の方法であるかどうかわからないので、これが最善のアプローチとは思えないため、コミュニティに推奨事項があるかどうかを確認したかった. 以下のコード:

<?php

     $nameurl = $_SERVER["REQUEST_URI"];

     if ($nameurl == "/fs/about.php"){
         echo "about page";
     }

     elseif ($nameurl == "/fs/index.php"){
         echo "home page";
     }
?>

理想的には、/fs/ の代わりにファイル名 (index.php または about.php) のみを使用したいと考えています。PHP で $_SERVER を使用する別の方法があるかどうかはわかりませんが、これを記述するより効率的で再利用可能な方法があるようです。考え?

4

4 に答える 4

0

あなたは試すことができます:

$currentFile = $_SERVER["PHP_SELF"];
$current_filename = explode('/', $currentFile);

また

$current_filename = basename($_SERVER['REQUEST_URI']) .'php';
于 2012-06-29T16:06:58.883 に答える
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;
}
于 2012-06-29T16:03:25.537 に答える
0

数行のコードを節約するために、複数のifをスイッチに置き換えることができます。

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

于 2012-06-29T16:03:31.700 に答える
0

これを試して

$nameurl = basename($_SERVER['REQUEST_URI'], '.php');
echo $nameurl, " page";

http://php.net/manual/en/function.basename.php

于 2012-06-29T16:04:21.633 に答える