- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
простой скрипт транслитерации:
$letters=array(
"а"=>"a",
"б"=>"b",
"в"=>"v",
.....
"я"=>"ya",
" "=>"_", );
while ($element = each($letters))
{ $eng_button=str_replace($element[0], $element[1], strtolower($button)); }
При обработке заданной вручную в файле переменной обрабатывает ее нормально.
При вводе $button через форму обрабатывает только символ пробела.
Массив $letters пробовал загружать из файла и из БД (кодировка win-1251).
В хтаксесс прописано AddDefaultCharset windows-1251
В хеде прописано <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
Работаю в HomeSite, он все сохраняет в ANSI.
При этом
while ($element = each($letters))
{ echo $element[0].' - '.$element[1].'<br>'; }
все выводит корректно.
Где закрался косяк?
1. Тут лучше применить функцию strtr.
2. Сделайте echo данных из формы, и подберите кодировку, в которой приходят данные. Потом iconv'ом переводите все данные из вне в кодировку страницы. Вообще лучше все в UTF-8, решаются многие проблемы
возможно локаль нужно установить
1. установи локаль setlocale();
2. сохрани файл скрипта в кодировке CP-1251 (она же Windows-1251);
3. воспользуйся советом JonnyB и используй функцию strtr.
Радуйся работающему скрипту!
$letters=array(
"а"=>"a",
"б"=>"b",
"в"=>"v",
.....
"я"=>"ya",
" "=>"_", );
while ($element = each($letters))
{ $eng_button=str_replace($element[0], $element[1], strtolower($button)); }
Чистой воды мазахизм....
1. В str_replace() в первом и втором аргументе можно применять массивы. Т.е.:
2. Вот вам функция транслитерации:
Progr@mmer., у тебя отличный ник (знак "собачка" стоит там где надо). Молодец что не поленился написать развернутый ответ!
Pro PHP добавил 10.05.2008 в 14:38
Кстати, для справки. В PHP есть функция транслитерации, которая уже встроена. Я на нее наталкивался как-то недавно. Можете поискать ее в рубрике справки "Работа со строками" ("Строковые функции").
Вот ссылки для пищи мозга:
- http://pecl.php.net/package/translit
- http://sitemaker.ru/develop/php/translit/
Всем спасибо за участие.
strtr и локаль проблему не решили.
Помог готовый вариант от Progr@mmer\., ему отдельное спасибо.
Кстати, для справки. В PHP есть функция транслитерации, которая уже встроена
Встроена для всех языков? Хз хз...
pecl translit - это доп. модуль, который обычно не включен на серверах - так что это не решение проблемы
programmer использовать три вызова strtr ради транлитерации строки - по моему это издевательство над серверов... не стану говорить, что в целом функция плохая (потому что сейчас нет времени писать сюда свой вариант), но как минимум 3 вызова можно было бы в 1 превратить...
Да, есть на большинстве платформах, iconv называется (с //TRANSLIT).
an0nym, это код из DLE. Там ни строчки моего нет %)