[英]PHP: How do I use $_GET to read the parameter characters literally?
我正在嘗試創建一個在腳本在適當的頁面和子頁面上找到自身時回顯“當前”的子導航。
我的問題是,當比較$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 & 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>
您遇到的問題是,編碼是在工作的中間進行,而不是在實際輸出的末尾進行編碼。 別那樣做。
使用urldecode :
$subpage = urldecode($_GET['subp']);
我建議您將代碼中的頁面名稱更改為URL友好名稱(就像大多數CMS使用其永久鏈接一樣),然后在對URL進行編碼之后,字符串將保持不變。
風格:
在您的情況下,這會產生類似以下內容:
$subpages = array(
"powered-by-company",
"text-messaging",
"the-app",
"NFC",
"your-membership",
"faq",
"privacy-policy",
"terms-and-conditions"
);
可能有趣的鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.