- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В php 5.2.17 отлично работал вот такой код:
$description='привет как дела';
$description=preg_replace('@\bкак\b@', 'никак',$description);
echo $description;
В PHP 5.4 он нифига не заменяет, ни ошибок, ничего, просто не срабатывает. Никто не сталкивался? В поиске тишина.
---------- Добавлено 17.10.2013 в 12:59 ----------
Опытным путём выяснил, что русские буквы именно так не хочет обрабатывать.
Кодировка win1251 стоит.
Без \b отлично обрабатывает.
Может, локалю нужно указать?
;12246840']Может, локалю нужно указать?
Да всё уже указал, пачкой:
mb_http_input('windows-1251');
mb_http_output('windows-1251');
mb_internal_encoding("windows-1251");
setlocale(LC_ALL, 'ru_RU.CP1251');
Не имеет смысла. При этом, что именно с \b не хочет работать. В чём фокус.
То есть, например, \w оно принимает за букву?
;12246874']То есть, например, \w оно принимает за букву?
\w если только опять же по бокам английские буквы
А вот \W отлично кушает. Конечно только приходиться менять кучу шаблонов для вывода т.к. он всё что по бокам скушает.
---------- Добавлено 17.10.2013 в 13:17 ----------
Но проблема остаётся, с чего это вдруг \b перестало обрабатываться.
---------- Добавлено 17.10.2013 в 13:19 ----------
О прикол. В UTF-8 отлично обрабатывает :D
Значит, проблема с локалью.
У меня вот такой вариант не работает (обе реги)
А вот такой вариант работает (обе реги):
;12246926']Значит, проблема с локалью.
У меня вот такой вариант не работает (обе реги)
А вот такой вариант работает (обе реги):
На винде с 5.4?
---------- Добавлено 17.10.2013 в 13:32 ----------
Сработала вот такая установка:
setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
НО... как это по умолчанию то выставить. Скриптов много.
На винде с 5.4?
Ой не, не на винде.
Но если на винде это пускать, то там тоже должны быть локали, которые где-то лежат и доступны для чтения.
Если скрипт не работает, значит, у пхп не получается прочитать локаль.
Сработала вот такая установка:
setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
Значит, по-другому называются в виндовсе :)
НО... как это по умолчанию то выставить. Скриптов много.
Вы меня конфузите такими вопросами ))
Или скриптом или в системе выставить или в php.ini или в .htaccess
Всё короче.
Достаточно просто в php.ini прописать: default_charset = "CP1251"
Остальная проблема вылилась из того, что apache не перезагрузился. Пришлось убивать и заново стартовать.
---------- Добавлено 17.10.2013 в 13:40 ----------
;12246978']
Вы меня конфузите такими вопросами ))
Или скриптом или в системе выставить или в php.ini или в .htaccess
Да я сам тут сконфузился. Думал неужели в php5.4 по другому что-то замутили 😂
А это сволочуга апатч 😂
---------- Добавлено 17.10.2013 в 14:47 ----------
Так, рано радовался. Всё не так просто.
default_charset = "CP1251" чуть не то. Если в скрипте не установить локаль, то она не срабатывает.
Ок, вопрос на засыпку. Как в php.ini прописать локаль?
Модуль intl не срабатывает, библиотека подключена.
Ещё варианты?
---------- Добавлено 17.10.2013 в 14:49 ----------
Проверяю phpinfo()
intl.default_locale Russian_Russia.1251
Всё ок, НО пока в скрипте я не пропишу: setlocale(LC_ALL, 'Russian_Russia.1251');
Регулярка не сработает. В чём прикол?
Да, действительно, работает только после setlocale() и никакие шаманства с php.ini и .htaccess воздействия не имеют.
Во всяком случае, у меня тоже не получилось установить дефолтную локаль.
---------- Добавлено 17.10.2013 в 13:37 ----------
Как вариант, сделать в php.ini или в конфиге виртуалхоста костыль в виде auto_prepend_file.
;12247428']
Как вариант, сделать в php.ini или в конфиге виртуалхоста костыль в виде auto_prepend_file.
Это последнее о чём я думаю. Как оно всё работало в 5.2 не понимаю. И что в 5.4 версии не смогли сделать установку локали. Да это нонсенс.
---------- Добавлено 17.10.2013 в 15:45 ----------
не ну умора в том, что переводим код в utf-8 и всё начинает работать. Никаких локалей не нужно.