PDA

View Full Version : ссылки по-русски


diplodok
09.01.2007, 00:15
Всем привет. Может хотя бы здесь мне помогут.
У меня необычная проблема(может только для меня)
Я играю в онлайн игру и сделал сайт на базе нюки 7.9 от Shkurki.ru
Так вот в игре используются русские имена. Соответственно ссылки на персонажей тоже с русскими символами. Проблема в том что на форуме почему то русские символы в ссылке игнорируются.
Например:
правильная ссылка - http://go.territory.ru/user_info.php?log=Урфин%20Джус
на моём форуме получается - http://go.territory.ru/user_info.php?log=Урфин%20Джус
Если имя персонажа латиницей, то ссылка отображается нормально.

С чем это может быть связанно? Помогите разобраться. Уже год так мучаюсь. :cry:

Soniks
09.01.2007, 00:49
diplodok в сылке пробелов не должно быть, используйте функцию urlencode()

diplodok
09.01.2007, 00:55
Пробелы для правильной адресации ссылки заменяются на %20, но не в пробелах проблема. Тоже самое и без них происходит.

Soniks
09.01.2007, 01:05
diplodok значит в скрипте какой-то фильтр стоит

diplodok
09.01.2007, 01:09
Soniks может, но где он может быть? А самое интересное, что на денвере всё работает на ура. Кстати на форуме шкурок таже самая ситуация.

Soniks
10.01.2007, 03:02
diplodok А самое интересное, что на денвере всё работает на ура. тогда проблемма может быть в сервере или браузере?

diplodok
10.01.2007, 16:48
Если смотреть результирующий HTML код, то ссылка выглядит так:
<a href="http://go.territory.ru/user_info.php?log=" target="_blank">http://go.territory.ru/user_info.php?log=</a>Игрок<br />

Т.е. русское слово не попадает в ссылку.
Независимо от броузера и компьютера с которого идет просмотр странички.

Если принудительно на форуме заключить ссылку в URL-тэг, то она показывается просто как текст, а не ссылка.
Этот глюк проявляется только на форуме. В контенте, в новостной ленте и др. станицах сайта ссылки отображаются нормально. Видимо BBCode не понимает русский язык или еще что. Я не профи в PHP и мне трудно найти откуда ноги растут у этой проблемы.
Если проблема на сервере, то я так понимаю надо трясти хостера. Тогда в чем может быть проблема, на какие параметры обратить внимание хостера? Мой сайт являестся субдоменом моего же домена. Может нужно поменять какието настройки домена?

PS
Вот что я обнаружил. русские буквы в ссылке воспринимаются аналогично пробелам и соответственно в автомате игнорируются Bb-кодом, а в принудительном заключении в тэг Url ссылка воспринимается как обычный текст. где это можно поправить?

Soniks
12.01.2007, 02:53
diplodok все правильно, если используете сторонний bbcode то там возможена стоит проверка урла или сам bbcode так устроин и стоит там скажем поиск по a-Z, т.е. писалась не под русских пользователей, нужно айти этот кусок кода и добавить а-яА-Я

diplodok
12.01.2007, 16:42
Спасибо, нашел и добавил необходимое. Это было в ../includes/bbcode.php

// matches a xxxx://www.phpbb.com code..
$patterns[] = "#\([\w]+?://([\w\#$%&~/.\-;:=,?@\а-яА-Я\]+]+|\[(?!url=))*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url1'];

// [url]www.phpbb.com code.. (no xxxx:// prefix).
$patterns[] = "#\[url\]((www|ftp)\.([\w\#$%&~/.\-;:=,?@\а-яА-Я\]+]+|\[(?!url=))*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url2'];

// phpBB (xxxx://www.phpbb.com) code..
$patterns[] = "#\+?://[\w\#$%&~/.\-;:=,?@\а-яА-Я\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url3'];

// [url=www.phpbb.com]phpBB (([\w) code.. (no xxxx:// prefix).
$patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\а-яА-Я\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url4'];
:smile: