Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » URL не видит русский. Что делать?

URL не видит русский. Что делать?


     09.09.2016    Все вопросы » Общие вопросы по PHP    1689

вопрос
hotels/russia//Swissotel-Le-Plaza-Basel

Никак не могу понять почему URL не видит название города после russia/ т.е ставит // и все, название города на русском, если писать его в транслите на английском то все ок. Что подскажите?

Ответил: Pringles


Транслит делать

6 комментариев

Proff
Юзер

Proff - 9 сентября 2016 12:12 -

Ну скорее всего дело все-таки в скрипте. Без кода подсказать трудно, сильно большое шаманство надо, однако.

work.axis
Юзер

work.axis - 9 сентября 2016 13:36 -

С этим разобрался, проблема была в регулярных выражениях. Теперь hotels/russia/Рюмшино/-qwqw?&checkin=
qwqw тут теперь не видит русский)

work.axis
Юзер

work.axis - 9 сентября 2016 13:37 -

if ( ! function_exists('url_title'))
{
    function url_title($str, $separator = '-', $lowercase = FALSE)
    {
        if ($separator == 'dash')
        {
            $separator = '-';
        }
        else if ($separator == 'underscore')
        {
            $separator = '_';
        }

        $q_separator = preg_quote($separator);

        $trans = array(
            '&.+?;'                 => '',
            '^[а-яА-ЯёЁa-zA-Z0-9]+$]'    => '',
            '\s+'                   => $separator,
            '('.$q_separator.')+'   => $separator
        );

        $str = strip_tags($str);

        foreach ($trans as $key => $val)
        {
            $str = preg_replace("#".$key."#i", $val, $str);
        }

        if ($lowercase === TRUE)
        {
            $str = strtolower($str);
        }

        return trim($str, $separator);
    }
}

Proff
Юзер

Proff - 9 сентября 2016 15:49 -

Что в нее водится и что должно выйти? Вот эта часть, которую ты заменил на qwqw, или что? Немаловажный вопрос - кодировка какая?
Вероятнее всего ошибка в одной из стандартных php-функций при работе с кириллицей. Но это так, на вскидку.

work.axis
Юзер

work.axis - 9 сентября 2016 15:56 -

utf8, qwqw это как пример, т.е только анг. буквы видит, а русские нет. В место русских букв ставит (-)

Proff
Юзер

Proff - 9 сентября 2016 16:02 -

Ну (-) скорее всего из функции выходит.
На вскидку (не зная что у тебя в переменной lowercase) сразу могу сказать - strtolower здесь использовать неверно, надо mb_strtolower
mb_strtolower($str, 'UTF-8');

ну и не забыть установить header
header("Content-tupe: text/html; charset=utf-8");


Попробуй без strtolower в конце концов, для проверки.

Остальные функции вроде не должны портить кириллицу.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх