[英]Interpreting Swedish letters (å, ä, ö) in a GET form submission
我目前正在創建一個自定義 WordPress 主題。 一些存檔頁面將包含隱藏的 forms(以圖片表示)。 這些 forms 中的每一個都代表一個帖子。 當用戶單擊表單時,將運行 GET 請求並且瀏覽器檢索特定帖子的內容。
每個隱藏表單都將帖子的標題作為值(作為這樣的查詢字符串:/lokaler/?lokal=Studion('Studion' 是標題,'lokaler' 是帖子類型))。 這工作正常,我得到所需的信息,沒問題。
當我想對包含 Ä 的標題執行相同操作時,就會出現問題。 查詢 /lokaler/?lokal=Sammanträdesrummet (顯然)不起作用,但我似乎找不到解決方法......我在此頁面上使用 JavaScript 和 PHP 的組合。
我將如何解決它以使 GET 請求有效但我不必更改帖子的標題?
//how the form is created:
<form method="GET" id="lokal_<?php echo get_the_title(); ?>" class="single_lokal_container single_lokal_lokal">
<input type="hidden" name="lokal" value="<?php echo get_the_title(); ?>">
etc...
//how post is queried
$current_lokal_from_uri = htmlspecialchars($_GET['lokal']);
$args3 = array(
'name' => $current_lokal_from_uri,
'post_type' => 'lokaler'
);
您應該能夠通過 GET 參數很好地傳遞這些。 只要確保一致地編碼和解碼:
var plain = 'åäö';
var urlencoded = encodeURIComponent(plain);
var unencoded = decodeURIComponent(urlencoded);
console.log('plain', plain);// plain åäö
console.log('urlencoded', urlencoded);// urlencoded %C3%A5%C3%A4%C3%B6
console.log('unencoded', unencoded);// unencoded åäö
echo urldecode('%C3%A5%C3%A4%C3%B6'); // åäö
請記住,HTMLSpecialChars 用於將字符編碼為 html 安全風格而不是參數編碼(例如&
變為&
並且<
變為$lt;
)
我已經設法解決了這個問題。
我使用 urlencode 和 decode 作為表單的值。 嘗試從解碼值生成 wp_query 時出現下一個問題。 最后,這是一個簡單的修復:我必須將解碼值中的 ä 替換為 a:
$current_lokal_from_uri_decoded = urldecode($current_lokal_from_uri);
if(strpos($current_lokal_from_uri_decoded, 'ä') !== false) {
$current_lokal_from_uri_decoded = str_replace('ä', 'a', $current_lokal_from_uri_decoded);
}
$args3 = array(
'name' => $current_lokal_from_uri_decoded,
'post_type' => 'lokaler'
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.