Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как организовать транскрипцию слов для вставки в БД?
Покинул форум
Сообщений всего: 186
Дата рег-ции: Февр. 2010
Помог: 3 раз(а)
Есть своя админка, необходимо при добавлении новой страны или курорта происходила автоматическая транскрипция названий. Пример: Хочу добавить страну Италия
Ввожу несколько фрм с описанием и прочее... И хочу чтобы страница выглядела таким образом www[dot]сайт[dot]ru/country_view.php?id=italiya
С добавлением конечно проблем нет. но вот с транскрипцией возник вопрос... Логично можно предположить, что каждый символ перевести в "транскриптизированный" символ. типа:
И = I,
и = i,
Т = T
T = t
И так далее...
Помогите пж.
Нужно для того что бы сайт был более оптимизирован для ПС.
спасибо
ZeiZ
Отправлено: 22 Апреля, 2010 - 17:22:28
Частый гость
Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009 Откуда: Москва
Помог: 0 раз(а)
Могут долго меня пинать за это, но я сделал что-то так:
(не для ссылок, а для создания директорий на сервере)
Если у кого есть лучше решение, с удовольствием посмотрю. (Добавление)
А вообще id=italia или id=15 ИМХО для ПС разницы никакой.
более 9000 раз обсуждалось, что не ЧПУ не всякие другие примочки на ЦИТ не влияют, зато для базы будет проще вынуть идшник чем слово + id (AI) повторяться не может в отличии от слов.
Kubert
Отправлено: 23 Апреля, 2010 - 11:10:14
Частый гость
Покинул форум
Сообщений всего: 186
Дата рег-ции: Февр. 2010
Помог: 3 раз(а)
спасибо, попробую.
JustUserR
Отправлено: 23 Апреля, 2010 - 12:00:33
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Kubert Вы можете конечно использовать транслитерированные названия если вам удобно - однако в БД первичным ключтом для поиска должен оставаться ID (Для ускорения поиска) - а также длина транслитерированного названия должна быть ограничена (А то получите HTTP error 414 - слишком длинный GET-запрос) ZeiZФункция хорошая - но я бы заменял "ж"=>"zh" и "й"=>"j" (Чтобы было взаимно-однозначное преобразование в обратную сторону)
Кроме того можно обойтись без циклом с использованием функции http://php.su/functions/?strtr
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Kubert
Отправлено: 24 Апреля, 2010 - 23:06:26
Частый гость
Покинул форум
Сообщений всего: 186
Дата рег-ции: Февр. 2010
Помог: 3 раз(а)
JustUserR пишет:
Kubert Вы можете конечно использовать транслитерированные названия если вам удобно - однако в БД первичным ключтом для поиска должен оставаться ID (Для ускорения поиска) - а также длина транслитерированного названия должна быть ограничена (А то получите HTTP error 414 - слишком длинный GET-запрос) ZeiZФункция хорошая - но я бы заменял "ж"=>"zh" и "й"=>"j" (Чтобы было взаимно-однозначное преобразование в обратную сторону)
Кроме того можно обойтись без циклом с использованием функции http://php.su/functions/?strtr
Спасибо за ответ. Вы правы что намного разумнее что бы первичный ключ был ID, это мне понятно. М нет необходимости делать первичным ключем трансл....ющие слова. Мне они необходимы только для урла.
JustUserR
Отправлено: 25 Апреля, 2010 - 12:01:44
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Kubert пишет:
Спасибо за ответ. Вы правы что намного разумнее что бы первичный ключ был ID, это мне понятно. М нет необходимости делать первичным ключем трансл....ющие слова. Мне они необходимы только для урла
Пожалуйста! В таком случае вы можете оставлять все как есть - только для транслитерации быстрее все-таки использовать вышеприведенную функцию - поскольку если в ней и есть циклы то это не циклы интерпретируемого PHP а более низкоуровневые и как следствие более быстрые
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Viper
Отправлено: 26 Апреля, 2010 - 08:23:09
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Viper пишет:
ГОСТ смотрели ? видимо нет.
й => jj
ж => j
Действительно не смотрел - спасибо за интересную ссылку на ГОСТ Однако я действительно верно подметил что буквы Ы и Й должны заменяться разными транслитерированными аналогами - иначе не получится однозначного соответствия при обратном переводе текста
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
ZeiZ
Отправлено: 26 Апреля, 2010 - 17:32:19
Частый гость
Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009 Откуда: Москва
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
ZeiZ пишет:
Viper ГОСТ 7.79-2000 Дата введения: 07/01/2002
Взамен ГОСТ 16876-71. http://orwell.ru/info/tliter.html
В общем-то судя по приведенной по ссылке таблице - вариант транслитерации указанные выше является верным только нужно проихвести две замены И кстати как я верно заметил одним из свойств транслитерации обязано быть то - что должна быть однозачная обратная восстанавливаемость - чего также не было в первоначальном варианте
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
0931454574
Отправлено: 24 Апреля, 2011 - 17:53:21
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Март 2011
Помог: 0 раз(а)
Есть более простой способ создания транслита русских слов в латынь) привожу ниже пример.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.