| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Тексты > Транслит |
| Автор: supercelt 3.6.2008, 11:27 | ||
Подставляются туда только буквы, причём только одна. Так вот, всё до G - нормально, а буква g (G) заменяется на Ф. И такая же херь ещё с некоторыми. В чём может быть ошибка? |
| Автор: krundetz 3.6.2008, 11:51 | ||
| Внимательнее смотрите на свои строки у вас как раз строке с английскими буквами повторяется несколько раз буква G а против неё стоят разные буквы в строке с русскими буквами. А вообще там алгоритм используется обычно другой. Добавлено через 5 минут и 13 секунд
|
| Автор: supercelt 3.6.2008, 12:11 |
| ааа, ясно, спасибо |
| Автор: Feldmarschall 3.6.2008, 12:45 |
| krundetz, это ты серьёзно? |
| Автор: bars80080 3.6.2008, 12:54 | ||
есть покороче вариант:
Добавлено через 1 минуту и 13 секунд надо только перевернуть её в обратную сторону |
| Автор: krundetz 3.6.2008, 14:05 | ||
Абсолютно. Вобщем то код там рабочий из какогото уже несуществующего проекта. Но выкладывал я его чтобы принцип понятен был. Как его оптимизировать показал bars80080. |
| Автор: Feldmarschall 3.6.2008, 14:09 |
| krundetz, у тебя там не принцип, а голотяпство с костылями. Принцип показан уже у автора вопроса. Как его оптимизировать, показал Барс. А ты тут вообще не при чем |
| Автор: slaw 4.6.2008, 11:32 |
| Feldmarschall, рабочий скрипт?.. рабочий... а то, что через ... сделан (так он сам признался, что не его творение... и это лишь пример)... к тому же у bars80080-а есть ошибка в функции (4 со 2 строкой местами поменять не мешало бы) |
| Автор: bars80080 4.6.2008, 11:38 |
| почему? это же перевод с кирилицы на латиницу, там везде берётся один символ. А вот в обратном направлении да, надо строку с многосимвольными сочетаниями поднять на первое место, ну и поменять местами значения в массивах |
| Автор: supercelt 5.6.2008, 12:13 |
| Всё проще. В общем смысл такой, что слово помещается в базу и просто нужно выделить первую букву слова, что бы тоже записать её в базу, для лёгкого отображения по алфавиту. Но иногда в русском варианте чел может написать англ. буквы, не по ошибке, а потому что само слово такое. Вот и надо строго заменить одну букву только на одну. И вот проблема в том, что: г->g и ж->g. Так что функция strtr не подойдёт |
| Автор: Feldmarschall 5.6.2008, 12:48 |
| supercelt, тебе искусственный интеллект, что ли нужен? чтобы скрипт сам определял, что Gena - это Жена, а не Гена? Это тебе не на этот форум тогда |
| Автор: supercelt 5.6.2008, 13:15 |
| Feldmarschall ,речь идёт не о словах а только об одной букве, с которой начинается слово |
| Автор: Feldmarschall 5.6.2008, 13:19 |
| жесть. если речь будет идти об одной букве, СМЫСЛ моего вопроса изменится? |
| Автор: bars80080 5.6.2008, 13:19 | ||
| функция strtr нормально справляется со своими обязаностями естесственно будут погрешности на переводе туда-обратно, но этого не избежать (кирилица и латиница - это не разные кодировки одного и того же)
если же тебе нужно записать одну букву в БД, то не понятно зачем идёт транслитерация, раз неизвестно когда нужно переводить, а когда не нужно советую просто rawurlencode твоей букве и она везде будет выглядеть одинаково |
| Автор: Feldmarschall 5.6.2008, 13:20 |
| bars80080, ты вопрос читать не пробовал? перед тем, как на него отвечать |
| Автор: skyboy 5.6.2008, 13:27 |
именно поэтому люди используют не для "ж" не "g", а "zh". "ш" - это, кстати, две буквы в транслите. я, ю, ч - дщве буквы транслита. а "щ" - вообще три. Ъ и Ь обозначаются одинаково - ' так что если ты собираешьс использовать только одну букву для определния, то счастливого тебе плавания. |
| Автор: Feldmarschall 5.6.2008, 13:37 |
| вообще-то, ему и две не поможет. |
| Автор: skyboy 5.6.2008, 13:42 |
| Feldmarschall, согласен. сходу не пришло слово, которое "не определишь"(например, на "зх" не знаю ни одного слова; потому "zh" -> "ж"). но теперь есть куча примеров: счастье - schast'e - щастъе схоластика - sholastika - шоластика вобщем, после блуждания в неведении поддержу Feldmarschall'a в том, что задача потенциально нерешаема. |
| Автор: krundetz 5.6.2008, 15:35 | ||
supercelt а зачем делать так:
индексация вам на что? |
| Автор: krundetz 6.6.2008, 08:50 | ||
А если ввести словарь неоднозначных слов? |
| Автор: Feldmarschall 6.6.2008, 09:24 |
| krundetz, прежде, чем выдумывать нестандартное решение, сначала надо посмотреть на задачу. Я даже спросить сначала хотел - понял ли кто-нибудь, что это за "слово такое", в которого в русском варианте английские буквы. Но потом разобрался в конечной цели, и мне уже стало смешно. |
| Автор: skyboy 6.6.2008, 09:42 |
я вот не понял :( |
| Автор: krundetz 6.6.2008, 11:02 |
| Feldmarschall разясните пожалуйста. |
| Автор: Feldmarschall 6.6.2008, 12:22 |
| В каком смысле? Я не разъясняю, а сам хочу разъяснений - какую такую задачу мы решаем, чтобы для неё городить искусственный интеллект с определением. Здесь на форуме каждый второй вопрос типа "как мне выращивать бананы на потолке?". И каждый первый отвечатель начинает придумывать - как. А чуть копнешь - так выясняется, что этот юный ботаник даже огурцы на грядке на сажал. И что нужны ему не бананы, а люстра, и не выращивать, а повесить. |