Постраничный вывод и сохранение запроса

Platon_82

Новичок
Проблемы с кириллицей передавая данные методом GET

Как преоборазовывать кирилицу перед отправкой методом GET чтобы она не перекодировалась ?


Не знаю как сделать следующее:
Юзер ввел запрос нашло 1000 записей.
Вывожу страницы постраничного вывода. Как сделать так чтобы выбирая страницу скажем 5 мне передавалась переменная $query
 

Фанат

oncle terrible
Команда форума
добавить её к ссылкам на следующие страницы.
в переменной $query, надеюсь, у тебя не SQL запрос?
 

Platon_82

Новичок
PHP:
RewriteRule ^search/([0-9]{1,3})/([\S]{1,100})/$ search.php?page=$1&query=$2 [QSA]
$page - номер страницы
$query - сам запрос

Если запрос вводится кирилицей - то при переходе на следующую страницу выводится вместо него абракадабра
 

Фанат

oncle terrible
Команда форума
очередной, блин, гений - поиск на ЧПУ.
сделать толком не может, а туда же. хочет быть святее папы римского.
 

Platon_82

Новичок
Ну так типа красивее. Но проблема все равно остается что с ЧПУ что обычным способом.
Как с кириллицей быть чтобы она не перекодировалась?
 

Фанат

oncle terrible
Команда форума
вот именно, что остается.
то есть, постраничный вывод здесь не при чём.
как можно задавать не тот вопрос, который стоит на самом деле
 

Фанат

oncle terrible
Команда форума
кирилица, равно как и юникод, не разрешены в урле.
так что вся твоя красота идет лесом.
 

Фанат

oncle terrible
Команда форума
fast2111
http://phpclub.ru/talk/search.php?action=simplesearch&exactname=yes&forumchoice=-1&searchdate=-1&beforeafter=after&sortby=after&sortorder=descending&query=%E7%E0%F7%E5%EC

андестенд?

-~{}~ 11.04.08 12:12:

Platon_82, а это что, по-твоему?
В эксплорере, небось, галочка стоит - кодировать запрос в утф-8
 

fast2111

Новичок
все понял.
но потом-то "сам запрос" не передается.

>query - сам запрос
Запрос или параметр запроса?
 

Фанат

oncle terrible
Команда форума
fast2111
попробуй перечитать топик, понять все сам самостоятельно, и не задавать дурацких вопросов
 

Platon_82

Новичок
PHP:
function unicod($str) {
    $conv=array();
    for($x=128;$x<=143;$x++) $conv[$x+112]=chr(209).chr($x);
    for($x=144;$x<=191;$x++) $conv[$x+48]=chr(208).chr($x);
    $conv[184]=chr(209).chr(145); #ё
    $conv[168]=chr(208).chr(129); #Ё
    $conv[179]=chr(209).chr(150); #і
    $conv[178]=chr(208).chr(134); #І
    $conv[191]=chr(209).chr(151); #ї
    $conv[175]=chr(208).chr(135); #ї
    $conv[186]=chr(209).chr(148); #є
    $conv[170]=chr(208).chr(132); #Є
    $conv[180]=chr(210).chr(145); #ґ
    $conv[165]=chr(210).chr(144); #Ґ
    $conv[184]=chr(209).chr(145); #Ґ
    $ar=str_split($str);
    foreach($ar as $b) if(isset($conv[ord($b)])) $nstr.=$conv[ord($b)]; else $nstr.=$b;
    return $nstr;
} 
function Utf8Win($str,$type="w")
    {
        static $conv='';
        if (!is_array($conv))
        {
            $conv = array();
            for($x=128;$x<=143;$x++)
            {
                $conv['u'][]=chr(209).chr($x);
                $conv['w'][]=chr($x+112);
            }
            for($x=144;$x<=191;$x++)
            {
                $conv['u'][]=chr(208).chr($x);
                $conv['w'][]=chr($x+48);
            }
            $conv['u'][]=chr(208).chr(129); // Ё
            $conv['w'][]=chr(168);
            $conv['u'][]=chr(209).chr(145); // ё
            $conv['w'][]=chr(184);
            $conv['u'][]=chr(208).chr(135); // Ї
            $conv['w'][]=chr(175);
            $conv['u'][]=chr(209).chr(151); // ї
            $conv['w'][]=chr(191);
            $conv['u'][]=chr(208).chr(134); // І
            $conv['w'][]=chr(178);
            $conv['u'][]=chr(209).chr(150); // і
            $conv['w'][]=chr(179);
            $conv['u'][]=chr(210).chr(144); // Ґ
            $conv['w'][]=chr(165);
            $conv['u'][]=chr(210).chr(145); // ґ
            $conv['w'][]=chr(180);
            $conv['u'][]=chr(208).chr(132); // Є
            $conv['w'][]=chr(170);
            $conv['u'][]=chr(209).chr(148); // є
            $conv['w'][]=chr(186);
            $conv['u'][]=chr(226).chr(132).chr(150); // №
            $conv['w'][]=chr(185);
        }
        if ($type == 'w') { return str_replace($conv['u'],$conv['w'],$str); }
        elseif ($type == 'u') { return str_replace($conv['w'], $conv['u'],$str); }
        else { return $str; }
    }
Проблема решилась вроде бы
 

Фанат

oncle terrible
Команда форума
Platon_82 кодировать надо перед формированием ссылки, а не после приема.
 

Platon_82

Новичок
кодировать в утф а потом при приеме перекодировать в кириллицу, так?
 
Сверху