- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Уважаемые форумчане, доброго времени суток. Проблема проявилась таким образом.
Когда я ввожу в код php строки, то они выводятся на экран нормально, но стоит обработать их функциями mb_strtolower, strtolower, stripos и некоторыми другими и строки сразу же превращаются в вопросы. Например если я введу:
то $B в таком же виде, как я ввела и будет отображена на экране. Но уже попытка преобразовать строку к нижнему регистру:
приведёт к тому, что на экране $loveTextB отобразится вот так: ��� ����� ����� ������������!
В итоге результат работы функций непредсказуем. Например, попытка найти первую позиции вхождения в $B подстроки $A:
илиприведёт к выводу числа 7, что абсолютно не соответствует действительности. И я подозреваю, что это из-за этой вот петрушки с кодировками. Потому что если я перехожу на английский регистр, то всё становится нормально. И перевод к нижнему регистру строку не меняет и номера позиций правильно выдаются.
Тестирую на Denver, PHP Version 5.2.12. В настройках сервера стоит:
Кодировка в разделе для мета тегов указана:
В cкрипте настроек php прописаны команды:
иПодключен файл .htaccess со строкой:
Никто не знает почему некоторые функции php так реагируют на русскую кодировку и как этот момент можно исправить или обойти?
setlocale(LC_CTYPE,"ru_RU.UTF-8");
mb_internal_encoding("UTF-8");
Никто не знает почему некоторые функции php так реагируют на русскую кодировку и как этот момент можно исправить или обойти?
что такое русская кодировка?
В ман, видимо, отправлять бесполезно..
��� ����� ����� ������������!
У вас браузеру отдаётся неверная кодировка. Через .htaccess поправьте.
---------- Post added 25-04-2013 at 10:36 ----------
О, правильно заметили, mb_strtolower надо указывать, в какой кодировке извращаться.
Спасибо большое, когда я указала вот так:
то преобразованные строки стали отображаться правильно.А как можно указать в какой кодировке работать другим функциям? Например stripos как выдавала, что "Мяч" входит в строку начиная с седьмой позиции, так и выдаёт. А стоит заменить всё на английские символы и номер позиции выдаётся правильно: четвёртая.
Изменение настройки локали на:
не помогает.Файл .htaccess со строкой:
у меня и так есть.Ну а про русскую кодировку я просто неправильно сформулировала. Мне надо было написать вместо слов русская кодировка, слова русские символы
Уважаемая mirra88, не поленитесь сходить в доки.. если не по языку, то хотя бы по интересующим Вас функциям.. их можно найти в любом поисковике, введя название.
Для многих строковых функций есть mb-аналоги, в частности, для stripos - http://php.net/manual/en/function.mb-stripos.php
Вот $encoding - это "оно и есть".
Спасибо. Действительно, когда вместо stripos стала испальзовать mb_stripos, то всё стало работать правильно.