1

スクリプトが適切なページとサブページで自分自身を見つけたときに「現在」をエコーするサブナビゲーションを作成しようとしています。

私の問題は、$subpage == $encoded_subpage_name?"current":""比較すると、スペースのあるsubnav名は常に等しいのfalseです$encoded_subpage_nameが、そう+$subpageはないからです。

<?php

    if (isset($_GET['p'])) {
        $page = $_GET['p'];
    } else {
        $page = "";
    }
    if (isset($_GET['subp'])) {
        $subpage = $_GET['subp'];
    } else {
        $subpage = "";
    }

    $subpages = array(
        "powered by company",
        "text messaging",
        "the app",
        "NFC",
        "your membership",
        "faq",
        "privacy policy",
        "terms &amp; conditions"
    );


    function buildSubNav($page, $subpages) {
        foreach ($subpages as $subpage) {
            $encoded_subpage_name = urlencode($subpage);
            echo '<li class="' . selected_subpage($encoded_subpage_name) . '"><a href="?p=' . $page . '&subp=' . $encoded_subpage_name . '"> ' . $subpage . '</a></li>';
        }
    }
    function selected_subpage($encoded_subpage_name) {
        global $subpage;
        $subpage = ($subpage);
        echo $subpage;
        return $subpage == $encoded_subpage_name?"current":"";
    }


?>
<ul>
    <?php buildSubNav($page, $subpages); ?>
</ul>
4

3 に答える 3

3

あなたが抱えている問題は、実際に出力しているときの最後ではなく、作業の途中でエンコードしていることです。あんな事はしないで。

于 2012-07-22T06:47:02.733 に答える
2

urldecodeを使用します:

$subpage = urldecode($_GET['subp']);
于 2012-07-22T06:44:41.207 に答える
1

コード内のページ名をURLに適した名前に変更することをお勧めします(ほとんどのCMSがパーマリンクで行うように)。そうすれば、URLエンコードした後も文字列は同じままになります。

スタイリッシュなもの:

  • スペースを-に置き換えます
  • 「&」を「and」に置き換えます
  • ÅÄÖなどの国際的な文字を同様の文字AAOに置き換えます
  • アルファベット/数字と「-」が一致しないすべての文字を削除します

あなたの場合、それは次のようなものを生成します:

$subpages = array(
    "powered-by-company",
    "text-messaging",
    "the-app",
    "NFC",
    "your-membership",
    "faq",
    "privacy-policy",
    "terms-and-conditions"
);

面白いかもしれないリンク

于 2012-07-22T07:01:08.347 に答える