PHP:如何使用 $_GET 从字面上读取参数字符?

Posted

技术标签:

【中文标题】PHP:如何使用 $_GET 从字面上读取参数字符?【英文标题】:PHP: How do I use $_GET to read the parameter characters literally? 【发布时间】:2012-07-20 20:17:37 【问题描述】:

我正在尝试创建一个子导航,当脚本在适当的页面和子页面上找到自己时,它会回显“当前”。

我的问题是,当比较 $subpage == $encoded_subpage_name?"current":"" 时,带有空格的子导航名称总是等于 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>

【问题讨论】:

【参考方案1】:

使用urldecode:

$subpage = urldecode($_GET['subp']);

【讨论】:

【参考方案2】:

您遇到的问题是您在工作的中间进行编码,而不是在实际输出时进行编码。别这样了。

【讨论】:

我承认我们的设计师不应该总是被允许编写生产代码。【参考方案3】:

我建议您将代码中的页面名称更改为 URL 友好名称(就像大多数 CMS 对其永久链接所做的那样),然后在您对其进行 URL 编码后字符串将保持不变。

风格的东西:

用 - 替换空格 将“&”替换为“和” 将 ÅÄÖ 等国际字符替换为类似的 AAO 删除所有与字母/数字字符和“-”不匹配的字符

在你的情况下会产生类似的东西:

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

可能有趣的链接

Safe characters for friendly url How do I sanitize title URIs?

【讨论】:

以上是关于PHP:如何使用 $_GET 从字面上读取参数字符?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用PHP读取文本文件内容

php中的$_REQUEST()函数怎么用

php中的$_REQUEST()函数怎么用

PHP - 从当前数组中读取值

php如何将图片转成字节流

PHP从上传的文本文件中读取?