Устный перевод Swedi sh букв (å, ä, ö) в форме GET - PullRequest
0 голосов
/ 20 апреля 2020

Я сейчас создаю собственную тему WordPress. Несколько страниц архива будут содержать скрытые формы (представленные рисунками). Каждая из этих форм представляет собой пост. Когда пользователь щелкает форму, запускается запрос GET, и браузер извлекает содержимое указанного сообщения c.

Каждая скрытая форма принимает в качестве значения заголовок сообщения (в виде строки запроса). например: / 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'
            );

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Мне удалось решить проблему.

Я использовал urlencode и decode для значения формы. Следующая проблема возникла при попытке сделать wp_query из декодированного значения. В конце концов, это было простое исправление: мне пришлось заменить ä из декодированного значения на:


            $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'
            );
0 голосов
/ 20 апреля 2020

Вы должны быть в состоянии передать их через параметры 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;)

...