Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Ламерские вопросы » Пробел в русских символах в адресной строке %20

Пробел в русских символах в адресной строке %20


     23.05.2014    Все вопросы » Ламерские вопросы    7868

вопрос
Здравствуйте!

Есть такая проблема нашел тут же https://dle-faq.ru/faq/lamers/10326-poisk-po-dopolnitelnym-polyamkirilica.html решение по переводу символов при поиске по доп полям с


домен/xfsearch/%D4%E5%E4%EE/


на


домен/xfsearch/кириллица/


Все работает кирилица отображается правильно, но такая проблема, если в доп поле 2 слова к примеру имя и фамилия
то получается вот :


http:/домен/xfsearch/Имя%20Фамилия/

Я понимаю так заменяет он пробел
Можно ли как то сделать чтоб вместо %20 добавлялось к примеру "_" (нижнее подчеркивание)?
Спасибо

и еще как изменить /xfsearch на /name

спасибо

Ответа пока нет


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

shadow6630
Юзер

shadow6630 - 23 мая 2014 22:32 -

По поводу кириллицы - не лепите костыли и поставте UTF версию скрипта и будет вам счастье
Или же как вариант
$value2 = str_replace( '%20', ' ', $value2] );

По второму пункту - вот http://pro-script.ru/index.php?name=news&op=view&id=520

User221
Юзер

User221 - 24 мая 2014 00:01 -

Цитата: shadow6630
$value2 = str_replace( '%20', ' ', $value2] );


Я пробывал utf но у меня беда с базой была так как она cp1251

$value2 = str_replace( '%20', ' ', $value2] ); куда вставлять этот код?

shadow6630
Юзер

shadow6630 - 24 мая 2014 00:32 -

User221,
после
$value2 = str_replace("'", "'", $value2);
, добавить
$value2 = str_replace( '%20', ' ', $value2 );
Эту правку делать 2 раза (добавлять после каждого $value2 = str_replace("'", "'", $value2);)

User221
Юзер

User221 - 24 мая 2014 02:54 -

Сделал все как вы сказали

foreach ($temp_array as $value2) {

$value2 = trim($value2);
$value2 = str_replace("'", "'", $value2);
$value2 = str_replace( '%20', ' ', $value2 );


и так несколько раз
а вот именно $value2 = str_replace("'", "'", $value2); в коде нету, версия дле 9,8

Но все ровно символы остались /xfsearch/Михаэль%20Р.%20Роскам/

User221
Юзер

User221 - 24 мая 2014 07:47 -

И еще сделал по инструкции как тут http://pro-script.ru/index.php?name=news&op=view&id=520
но при переходе http://filmts.net/director/Михаэль%20Р.%20Роскам/ пишет, что нет такой страницы, хотя вот так http://filmts.net/xfsearch/Михаэль%20Р.%20Роскам/ все работает

shadow6630
Юзер

shadow6630 - 24 мая 2014 11:47 -

Заочно не могу сказать почему остались символы, как вариант после
$value2 = str_replace( '%20', ' ', $value2 );
прописать
print_r($value2);
die();
и посмотрите что покажет (потом не забудте удалить эту строчку)
А по второму пункту - это вам к автору того хака

User221
Юзер

User221 - 24 мая 2014 18:45 -

Прописал, при обновлении страницы белая страница и пишет значения поля к примеру Михаэль Р. Роскам

shadow6630
Юзер

shadow6630 - 24 мая 2014 21:05 -

User221,
ну вот видите значить в переменной обрабатывает нормально пробелы, попробуйте изменить
$value2 = str_replace( '%20', ' ', $value2 );
на
$value2 = str_replace( '%20', '-', $value2 );
$value2 = str_replace( ' ', '-', $value2 );

User221
Юзер

User221 - 24 мая 2014 22:21 -


Так работает, но с нижним подчеркиванием /xfsearch/Михаэль_Р._Роскам/
но суть в том, что и в само доп поле он добавляет символы _

а можно ли сделать, что б в само поле значение к примеру Михаэль Р.Роскам,
но ссылка имела вид /xfsearch/Михаэль_Р._Роскам/

User221
Юзер

User221 - 24 мая 2014 22:22 -


Что б было так

shadow6630
Юзер

shadow6630 - 24 мая 2014 22:42 -

1. Найти
                                    foreach ($temp_array as $value2) {
                
                                        $value2 = trim($value2);
                                        $value2 = str_replace("'", "'", $value2);
                
                                        if( $config['allow_alt_url'] == "yes" ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";
                                        else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&xf=" . urlencode( $value2 ) . "\">" . $value2 . "</a>";
                                    }
                
                                    $xfieldsdata[$value[0]] = implode(", ", $value3);
                
                                    unset($temp_array);
                                    unset($value2);
                                    unset($value3);
                
                                }
заменить на
                                    foreach ($temp_array as $value2) {
                
                                        $value2 = trim($value2);
                                        $value2 = str_replace("'", "'", $value2);
                                        $value_tm = str_replace( '%20', '-', $value2 );
$value_tm = str_replace( ' ', '-', $value2 );
                
                                        if( $config['allow_alt_url'] == "yes" ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . $value_tm . "/\">" . $value2 . "</a>";
                                        else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&xf=" . $value_tm . "\">" . $value2 . "</a>";
                                    }
                
                                    $xfieldsdata[$value[0]] = implode(", ", $value3);
                
                                    unset($temp_array);
                                    unset($value2);
                                    unset($value3);
                                    unset($value_tm);
                
                                }

shadow6630
Юзер

shadow6630 - 24 мая 2014 22:43 -

2. найти
                    foreach ($temp_array as $value2) {

                        $value2 = trim($value2);
                        $value2 = str_replace("'", "'", $value2);

                        if( $config['allow_alt_url'] == "yes" ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";
                        else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&xf=" . urlencode( $value2 ) . "\">" . $value2 . "</a>";
                    }

                    $xfieldsdata[$value[0]] = implode(", ", $value3);

                    unset($temp_array);
                    unset($value2);
                    unset($value3);

                }
заменить на
                    foreach ($temp_array as $value2) {

                        $value2 = trim($value2);
                        $value2 = str_replace("'", "'", $value2);
                        $value_tm = str_replace("%20", "-", $value2);
$value_tm = str_replace( ' ', '-', $value2 );

                        if( $config['allow_alt_url'] == "yes" ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . $value_tm . "/\">" . $value2 . "</a>";
                        else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&xf=" . $value_tm . "\">" . $value2 . "</a>";
                    }

                    $xfieldsdata[$value[0]] = implode(", ", $value3);

                    unset($temp_array);
                    unset($value2);
                    unset($value3);
                    unset($value_tm);

                }

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

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

наверх