Вячеслав Чимишук
71 сообщение
#16 лет назад
Здравствуйте.

Нужно преобразовывать название товара в латиницу, для использования его потом в URL.
Вот пример названия: "godišnje leće". Название в кодировке UTF-8, и у меня проблема с преобразованием его в латиницу ("godisnje lece".
Пробую с помощью iconv так:
$s = iconv('utf-8', 'latin1', $s)

Но вывод обрезается, и выводится только "odi".

Не подскажете как решить проблему? А то гугление мне не особо помогло.

P.S.
Форум покрутил строки. Там должны быть символы с апострофами сверху, из западнославянских языков.
Андрей К.
17 сообщений
#16 лет назад
БД используется, если да? То проще sql запрос выполнить на преобразование поля.
Примерно так.
UPDATE `таблица` SET поле=CONVERT(CONVERT(поле USING utf-8) USING latin1);
Вячеслав Чимишук
71 сообщение
#16 лет назад
БД используется, MySQL.
Но мне нужно именно в скрипте такое преобразование сделать.
Андрей К.
17 сообщений
#16 лет назад
То есть эта переменная не числится в базе?
Вячеслав Чимишук
71 сообщение
#16 лет назад
Опишу задачу по детальней.
Стоит задача от заказчика: сделать ссылку на страницу с товаром в виде http://..../product-name.html
Я с таким не сталкивался никогда, и решил реализовать ее следующим способом:
- в БД сохраняем кроме названия товара "название для урла"
- его и суем в линк
- и поиск ведем по нем в БД, а не по ИД, как в классическом случае
И в инете кроме данного метода других не видел. Буду признателен, если кто поделится своими идеями реализации данной задачи.

Но дело в том что в названии товара могут присутствовать символы не только английского алфавита.
Можно попробовать и при записи преобразовывать название средствами MySQL (преобразовать кодировку и заменить пробелы), но хотелось бы все таки средствами PHP.
Андрей К.
17 сообщений
#16 лет назад
Не-не, тут Вам ЧПУ надо использовать. mod_rewrite
Вот ссылка по теме.

Там немного, но довольно понятно описано.
Андрей К.
17 сообщений
#16 лет назад
В Вашем случае будет примерно так:
#Получить  domain.com/product-name-1/ из domain.com/product.php?name=category-name-1
RewriteRule ^(+)/?$ product/php?name=$1
Вячеслав Чимишук
71 сообщение
#16 лет назад
Оно то так. Но это только часть работы, с mod_rewrite я знаком.
Но вот чтобы то самое имя в URL засунуть, его ведь нужно преобразовать. Что у меня и не получается сделать.
Андрей К.
17 сообщений
#16 лет назад
Преобразуйте через скрипт транслитерации.
Михаил В.
2195 сообщений
#16 лет назад
Voice
- комментарии посмотрите, задача относительно популярная, там есть.
Вячеслав Чимишук
71 сообщение
#16 лет назад
Спасибо всем за помощь.
Я все копал в сторону смены кодировки, а оно оказалось немного по другому:
$s = iconv('utf-8', 'ASCII//TRANSLIT', $s);


Утро вечера таки мудренее