- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В общем код:
Вот что на выходе (обращаем внимание на последнюю строку):
яблоко1 яблоко1 яблоко1 fo fo
*лОКо1 *ЛОКО1 *локо1 fo FO
ЯблОКо1 ЯБЛОКО1 яблоко1 *o *O
ЯблОКо1 ЯБЛОКО1 *блоко1 fo FO
т.е. функция становится чувствительна к регистру символов кириллици.
От сюда вопрос, из за чего такое поведение функции?
Если проблема с локалью, почему тогда остальные функции работают корректно?
mfl,
Вы знаете, она вообще какая-то дурацкая, эта str_replace. Пользуйтесь прегом.
к str_replace никаких претензий нет, а какие были замечены баги, а то повсеместно ей пользуюсь.
На php4 приходилось пользоваться прегом, но теперь есть php5 и это чудо str_ireplace(), которое совсем не требовательно к ресурсам по сравнению с функциями регулярных выражений.
mfl, Претензий нет ???
Посмотрите, как работает Ваш код: http://se-car.ru/test/1.php
и почитайте http://ru2.php.net/str_replace
Там в красноватой рамочке.
Претензий нет именно к str_replace() - регистрозависимая фуннкция
К str_ireplace() - регистронезависимой функции, как раз есть претензии, указанные в первом посте.
По поводу http://se-car.ru/test/1.php
str_ireplace() была введена только в php5, этот скрипт работает на PHP/4.4.4, следовательно при встрече неизвестной функции str_ireplace скрипт прекращает работу.
А кроме тех ошибок, что указаны на http://ru2.php.net/str_replace еще ошибки есть?
Как видим начиная с php 4.3.3 ошибка была исправлена.
яблоко1 яблоко1 яблоко1 fo fo
*лОКо1 *ЛОКО1 *локо1 fo FO
ЯблОКо1 ЯБЛОКО1 яблоко1 *o *O
*блОКо1 *БЛОКО1 *блоко1 fo FO
php 5.2.5 на локалхосте под виндами, если вы тоже под виндами проверяли, только локаль ставил я привычным проверенным вариантом :) setlocale(LC_ALL, 'ru_RU.CP1251', 'ru_RU', 'rus');
setlocale(LC_ALL, 'ru_RU.CP1251', 'ru_RU', 'rus');
Локаль можно и так устанавливать значения не имеет.
Проверил под виндой, отображается правильно.
Теперь из-за чего возможно такое поведение функции?
Каким образом можно заставить правильно работать её под Unix?
Да, реально какой-то странный глюк. С другими буквами, например, "б" аналогичная чушь.
Попробуйте на phpclub.ru об этом написать (пожалуй, там лучше спецы ;) ). Очень похоже на косяк, а не на проблемы с кодировками.