- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Нужно перевести строку в транслит, а потом ее обратно расшифровать. Если конкретнее, то на странице есть список чего-то, допустим продуктов, товару майонез должна формироваться ссылка типа site.ru/poisk.aspx?id=majonez, при переходе по ссылке параметр id должен обратно превратиться в майонез, так как по нему идет выборка по базе.
Создать словарь замены побуквенный приведет к переводу в одну сторону, а в обратную транслитерировать не всегда получается (если букву "ш" заменять на "sh", то слово "схимник" переведется как "shimnik", а обратно мы получим "шимник ... ну и так, навскидку, с буквами "ч", "щ", "ё", "ю").
Транслит.ру фразу:
транслитерирует как:
а обратно выдает:
Гугл примерно одинаково спотыкается.
Чотакакта мыслей, кроме как параллельно в сессии передавать параметр на кириллице, особо и нет. Куда копать? Разве выхода нет? Шуяли?!
P.S. сделаю наверное через сессию, а это так, моск поломать.
А зачем обратно? Храните в БД оригинал и транслит.
А зачем обратно? Храните в БД оригинал и транслит.
БД большая и проект уже пятый год работает, внутренности переделывать не хочется, сейчас параметр так и передается site.ru/search.aspx?id=майонез, только урлы с кириллицей Сапе не нравятся, несколько тысяч страниц получаются бесхозными.
Если внешний вид ссылки не критичен и регистр букв в слове не важен, то вместо проблемных символов, можно задействовать оставшиеся буквы английского алфавита (qwxy) и/или заглавные буквы (ё = J, ч = CH, ш = SH).
Если такой вариант не подходит, то можно создать в БД отдельную таблицу с двумя полями: исходное слово и его транслитерация. На внутренности это никак не повлияет.
P.S. А как через сессии это можно сделать? Если я сразу зайду на страницу site.ru/poisk.aspx?id=majonez, то откуда исходное слово возьмется?
Если урлы для сапы, то можно и через base_decode
Еще необходимо стоп-слово poisk из урла выкинуть. А вообще, с кириллицей проблем быть не должно, если использовать urlencode
Если я сразу зайду на страницу site.ru/poisk.aspx?id=majonez, то откуда исходное слово возьмется?
Ниоткуда) Этот вариант был отброшен сразу после того как написан) Уже почти доделал, только не таблицей в БД, а текстовым файликом (список каждую неделю немного изменяется, поэтому решил, что через файл лучше).
Как вариант: обратный транслитератор (из латинницы в кириллицу) переписать, чтоб транслитерация проходила в 2 этапа:
первый - замена букв, состоящих из нескольких символов: sh - ш, ch - ч, yu - ю, и т.д.
второй - в получившемся полупереведенном тексте заменять остальные буквы: b - б, v - в, и т.д.
Будет конечно чуть дольше, но совсем незначительно, а проблем со "схимником" не будет точно.
А с буквами типа "е", которая может быть и "э" и "е", надо нестандартный перевод значит делать, чтоб каждой букве соответствовал лишь один (набор) символ(ов)., типа e - e, je - э.
а проблем со "схимником" не будет точно.
Это понятно, что мы заменяем сначала многобуквенные сочетания (у "щ" предполагалось вообще "sch"), только вот как раз при этом подходе "схимники" и проявляются.
Совершенно верно. У меня облако меток фунциклирует по такому принципу - перед выводом в браузер кириллица в урле обрабатывается urlencode, а при переходе по урлу, содержащему кириллицу, - urldecode и по полученному результату выборка из БД.
Когда для меня возник такой вопрос, посмотрев что есть на эту тему в сети, я
остановился на стандарте ISO 9 (Транслитерация славянских алфавитов с возможность восстановления текста в исходном виде, система Б)
В системе А несколько символов, "неподходящих" для URL при транслитерации русского языка (в системе Б всего 1 - "`")
Вставил на сайт 2 функции на PHP (превод в транслит и обратно), но при использовнии таких адресов на сайте заменяю "`" на "%60"
С поисковиками проблем не возникает, но вот если ссылку размещают на сторонних сайтах, бывает что адрес обрезается по "`", или заменяется "`" на "~"
P.S. похоже у меня не полностью ISO 9, там Х->H, а у меня Х->X