簡體   English   中英

在 GET 表單提交中解釋瑞典語字母(å、ä、ö)

[英]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 安全風格而不是參數編碼(例如&變為&amp;並且<變為$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM